プログラミング覚え書き

WEB製作覚え書き

ノート代わりに勉強した内容をまとめています。

PHP:クッキー

 

 クッキーの概要は下記にて確認のこと

 

 クッキーを受信する

$_COOKIE['クッキー名']

クライアントのブラウザからサーバに送信されたクッキーは「$_COOKIE」が受信し管理する。受診した値を参照する場合はキーにクッキー名を指定する。

 

 

クッキーを送信する

setcookie(クッキー名,値,有効期限)

  • setcookie関数により、ブラウザに送信するクッキーを用意することができる。クッキー送信準備が整うとtrueを、問題が発生した場合はfalseを返す。
  • 有効期限を省略した場合、「ブラウザを終了するまで」を有効期限とする

 

エラーになるケース

  • php.iniの設定が「output_buffering=Off」の場合
  • php.iniの設定が「output_buffering=4096」のように設定されている場合に、4096バイト以上の文字出力以降でsetcookie関数を呼び出す
  • setcookie関数よりも前にHTMLタグを記述する。(HTMLの記述よりも前にPHPブロックを記述してsetcookie関数を呼び出すこと。)
  • setcookie関数よりも前に文字出力
  • setcookie関数を含む<?phpの前に空白行がある。
  • UTF-8文字コードをBOM付きで保存した場合

 

有効期限の設定

現在時刻から計算する関数

time()

現在時刻のタイムスタンプを取得する。秒数を足すことで現在時刻の指定時間後を指定することができる。

f:id:midori_x:20200211205411p:plain

指定時刻

mktime(時,分,秒,月,日,年)

f:id:midori_x:20200211205511p:plain

 

f:id:midori_x:20200211205839p:plain

f:id:midori_x:20200211210112p:plain

 ↓ ↓ ↓

f:id:midori_x:20200211210019p:plain

イメージ

f:id:midori_x:20200211210239p:plain

f:id:midori_x:20200211210324p:plain

 

 

クッキー利用時の注意

  • クッキーとして保存できるデータ容量はWebブラウザに依存する。殆どのブラウザが5KB前後までしか扱えないため、容量の大きなデータは扱えない。
  • クッキー情報はWebブラウザから簡単に見ることができる。また、クッキーの値は常にネットワーク上を流れるため盗聴される危険や、悪意あるプログラムによってユーザPCから流出することも考えられる。重要な情報は扱わないこと。
  • クッキーはブラウザ側に保存され、一部のブラウザではクッキーの値を自由に書き換えることができる。例えば、ショッピングカートの商品価格をクッキーの値で受け渡ししている場合、値段を書き換えられる可能性がある。システム根幹にかかわる情報は扱わないこと。

 

 

ブラウザの検証ツールでクッキーを確認

f:id:midori_x:20200211211153p:plain

 

 

保存されているクッキーの詳細を確認

f:id:midori_x:20200211211315p:plain

 

 

クッキーの削除

ユーザ側のブラウザに保存されるクッキーをサーバから直接削除することはできない。そのため、クッキーを削除するにはすぐに有効期限が切れるクッキーをユーザ側に渡して対応する。

f:id:midori_x:20200211211555p:plain

qiita.com