データを cookie に保存する
ユーザー毎の情報をcookieで管理する
cookieを利用すると、訪問者毎に異なる表示をすることができます。
cookieとは
cookieとは、サイト毎に固有の情報を保存したもので、サイト訪問者のパソコンにテキストデータとして保存されます。 訪問者がページを閲覧した回数や、オンラインショップで購入した履歴などを保存することができます。詳細はcookieの仕組みをごらんください。
cookieを使うには
cookieを使うには、関数 setcookie を使用します。 例えば訪問回数を数えるスクリプトは、以下のようになります。 (これはあくまでサンプル用です。後で述べますが、cookie を意味もなく使うのは避けましょう。)
<?php // cookie があればプラス1、無い場合は1にする if ($_COOKIE['visit']) { $count = $_COOKIE['visit'] + 1; } else { $count = 1; } setcookie("visit", $count); 変数名、値の順に指定 ?> <html> <body> こんにちは。 <?php print $count ;?> 回目の訪問ありがとうございます。 </body> </html>
ユーザー側でcookieを使用しない設定にしている場合は、常に1回目と表示されます。
cookieの有効期限
cookieには、有効期限を設定することができます。 有効期限は、変数名、値の後に秒単位で設定します。 下の例では1時間にしています。
<?php setcookie("visit", $count, time()+60*60); ?>
有効期限を設定しなかった場合は、cookieはブラウザを閉じるまで有効になります。 有効期限を過去に設定した場合は、cookieは(存在していれば)削除されます。
パスとドメインの設定
cookie を使用するときは、cookie が有効になるパスとドメイン指定してすることができます。指定しなかった場合にはカレントパス(htmlファイルがある場所)と、サーバーのドメイン(例えばこのサイトなら php-web.net)がそのまま使われます。
有効なパスとドメインは、有効期限の後にパス、ドメインの順で指定します。
<?php setcookie("visit", $count, time()+60*60, "/program/", "sample.php-web.net"); ?>
cookie を HTTPS でのみ利用する
HTTPS は、HTTP にデータ暗号化機能を付加したプロトコルで、通信の安全性が高くなっています。 HTTPS で通信するときだけ cookie を使用することもできます。
HTTPS でのみ cookie を有効にするには、ドメインの後に、1 を指定します。
<?php setcookie("visit", $count, time()+60*60, "/program/", "sample.php-web.net",1); ?>
cookieを使うときの注意
cookieを使うときは、以下のことに注意しましょう。
- 変数の数は20個までしか使えない。
- 20個を越えると、古いものから消去されてしまいます。 ショッピングカート等では注意しましょう。
- <html>タグの前に関数を記述する。
- cookie は HTTP ヘッダを利用しているので、<html>タグ(ブラウザへの出力)の前に関数を書いておかないといけません。
- ユーザー環境によっては利用できない。
- ブラウザやファイアウォールの設定で cookie を無効にできます。 むやみと cookie を利用するのは避けましょう。 ショッピングカート等で cookie が必要な場合は、訪問者に cookie を使うことを知らせましょう。
- cookie の内容はユーザーのパソコンに保存される。
- パスワード等を cookie に保存してしまうと、 パソコンを他人と共用している場合などに、パスワードが洩れる可能性があります。