管理職サラリーマン。

様々な職種を経験してきた中途半端な管理職サラリーマンが贈るブログ

【サルでも分かる】PHPでクッキー(Cookie)を実装してみる

クッキー(Cookie)について2回に渡り、取り上げてきました。

前回の記事は、こちら

前々回の記事は、こちら

ただ、実際に実装してみないと具体的なことは分からないものですよね。
ということで、今回はPHPを使ってクッキーの簡単な実装について触れます。

PHPでクッキーを実装してみる

サンプルコード name.php

<?php
setcookie(‘username’,’hatena’,time()+60*5);
echo $_COOKIE[‘username’];
?>

各行の説明をしていきます

  • setcookie(‘username’,’hatena’,time()+60*5);
    • usernameという箱に、hatena という名前を格納
    • timeに関しては、60(s)×5(m)ということで、クッキーの有効期限を5分と設定
    • timeに関しては、設定しなければ、ブラウザを閉じるまで保持
    • 仮にクッキーの有効期限を1週間にしたい場合には606024*7といった具合に変更が必要
  • echo $_COOKIE[‘username’];
    • クッキーに格納した情報を分かりやすくブラウザに表示させているだけです

ブラウザから実際にアクセスしてみる

初回アクセス前のブラウザ(FireFox)のクッキー確認画面

f:id:virtual-coin:20171121164034p:plain

初回アクセス後のブラウザ画面

初回アクセス時にはクッキーはない状態でアクセスするので何も表示されません

f:id:virtual-coin:20171121165126p:plain

初回アクセス後のブラウザ(FireFox)のクッキー確認画面

f:id:virtual-coin:20171121164951p:plain

初回アクセス後のPC内のFireFoxクッキーファイル

下記のようなsqliteファイル内にクッキー情報として1レコード追加されています。
ちなみに、"1511241089"という文字列の箇所は時間(unix時間)を示しています。
これを変換すると、クッキーの有効期限である
"2017年11月21日 14:12:09"となります

sqlite> select * from moz_cookies;
1|<ホスト名 or IPアドレス>||username|hatena|<ホスト名 or IPアドレス>|/|1511241089|1511240830368877|1511240790472542|0|0|0

2回目のアクセス時のブラウザ画面

クッキーに格納したusernameである’hatena’が表示されるのが確認できます

f:id:virtual-coin:20171121172808p:plain

クッキーを削除してみる

サンプルコード delete.php

<?php
setcookie(‘username’,’hatena’,time()-1);
echo $_COOKIE[‘username’];
?>
  • setcookie(‘username’,’hatena’,time()-1);
    • usernameという箱に、hatena という名前を格納
    • timeに関しては、『-1』とすることで、クッキーを削除することが可能
    • ちなみに、『-1』とは過去の時間を示しているため、即時削除となる
  • echo $_COOKIE[‘username’];
    • クッキーに格納した情報を、分かりやすくするために、ブラウザに表示

ブラウザから実際にアクセスしてみる

初回アクセス後のブラウザ画面

初回アクセス時にはクッキーはない状態でアクセスするので何も表示されません

f:id:virtual-coin:20171121165126p:plain

初回アクセス後のブラウザ(FireFox)のクッキー確認画面

f:id:virtual-coin:20171121173414p:plain

初回アクセス後のPC内のFireFoxクッキーファイル

下記のようなsqliteファイル内にクッキー情報として1レコード追加されています。
ちなみに、"1511241129"という文字列の箇所は時間(unix時間)を示しています。
これを変換すると、クッキーの有効期限である
"2017年11月21日 14:12:09"となります

sqlite> select * from moz_cookies;
1|<ホスト名 or IPアドレス>||username|hatena|<ホスト名 or IPアドレス>|/|1511241129|1511241129823435|1511241129561390|0|0|0

2回目アクセスとして "delete.php" にアクセス

delete.phpにアクセスした際のブラウザ画面

初回アクセス時に保有していたクッキーを提示しているので
この時にはブラウザにクッキー情報が表示されます

f:id:virtual-coin:20171121173814p:plain

delete.phpにアクセスした後のブラウザ(FireFox)のクッキー確認画面

削除されているので何も表示されません

f:id:virtual-coin:20171121173914p:plain

delete.phpにアクセスした後のPC内のFireFoxクッキーファイル

何も表示されていない=sqliteファイルからも削除された
ということが分かります

sqlite> select * from moz_cookies;
sqlite>

如何でしたでしょうか? 今回のクッキーに関する実装の触りはここまでです。 また、機会があったら、いつか、、、記事にしたいと思います!