今回ははお菓子のクッキーのことではありません。
前回、セッション管理について書きましたが、それに付随して、
ウェブで利用される仕組みで、クッキー(cookie)と
呼ばれる仕組みがあります。
クッキーは、ウェブサーバーからウェブクライアントに対して送られる
名前と数値をの組合せです。ウェブクライアントはこのクッキーを
記憶しています。ウェブサーバーは、ウェブクライアントが再び
アクセスしたときに、ウェブクライアントが記憶している
クッキーを取得することができます。
PHPでは、このクッキーを直接設定することができます。
クッキーを設定するには、setcookie()関数を使用し、
名前と値を組み合わせて設定します。
setcookie("名前","値")
上記のコードは、セッション管理と同じように、コードの先頭で
行わなければいけません。HTML文書前にです。
クッキーの値は、$_COOKIEに格納されます。
クッキーの名前を指定することで、設定した値を取得できます。
$_COOKIE["名前"]
サンプルコードの実行結果はこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php setcookie("count",true); ?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>$_COOKIEを使い、クッキーを管理してみる</title> <link rel="stylesheet" href="../style.css"> </head> <body> <h2>クッキーを表示してみる</h2> <?php if( !isset( $_COOKIE["count"] ) ){ echo "はじめまして<br>"; }else{ echo "またお会いしましたね<br>"; } ?> </body> </html> |
上記のサンプルコードでは、クッキーに値を設定しています。
複数ページで訪問回数を共有できることが確認できます。
セッション管理、クッキー設定はPC内に保存されています。
実際にウェブサイトを作成する場合は、重要な情報は
扱わない方がいいです。
クッキーを操作する
PHPでは、クッキーを削除することができます。
setcookie関数に名前だけを指定して、値は空にします。
setcookie("名前","")
クッキーには有効期限を設定することができます。
setcookie("名前",値,有効期限)
クッキーの名前countに1時間の有効期限を与える時、
以下のように書きます。time()関数は現在時刻を秒単位で得るための関数です。
3600秒(60*60)なら1時間を表します。
setcookie("count",1,time()+3600)
有効期限を設定しない特は、ユーザーがブラウザを閉じるまでが
有効期限とされます。
・クッキーには名前と値の組合せを設定できる。
・クッキーに有効期限を設定できる。
データを共有
クッキーやセッションのほか、データを複数ページで共有する方法で、
formの隠し属性を使うこともあります。<input>タグの
type属性の値を「hidden」として、「value」属性に共有したい
値を設定すると、送信時にこの値が渡されます。