PHPのcookie(クッキー)と session(セッション)
ホームページを訪問した ユーザー の情報を一時的の保存する仕組み、またはそのデータでID、パスワード、メールアドレス、訪問回数などが ユーザー 情報として保存されます。 これによって再訪問したときに ユーザー を特定したり情報を入力する手間が省けたりします。Web上のショッピングカートのようにページを移動しても購入情報を保持する場合などに使用します。
cookie(クッキー)
cookieとは、ブラウザ側に一時的にデータを保存するための仕組みです。その為ブラウザでcookieを有効ししてないと使えません(通常は初期値で有効になってます)。
PHPで設定する場合は、setcookie という関数を使い以下のように記述します。
1 |
setcookie(クッキー名,保存したい値,有効期限); |
有効期限は省略する事ができ、省略するとブラウザが開いている間のみ保存され閉じると値はなくなります。
1 2 3 |
setcookie("name","genjin"); setcookie("namae","原人",time()+60*60*24); //(下は24時間保存されます) |
ブラウザに保存したcookieを画面表示する場合は、
echo $_COOKIE[“namae”];
明示的に削除する場合は、有効期限に今のタイムスタンプより前のタイムスタンプを設定します。
setcookie(“namae”,”原人”,time()-1);
session(セッション)
sessionとはcookieがブラウザにデータを一時保存するのに対してサーバ側に保存します。
cookieはブラウザ側に保存されるという性質上、ユーザーがデータを改ざんすることもできてしまうため、sessionのほうがよりセキュリティ的に安全だと言われています。
会員サイトやショッピングサイトなど、ログインをしてユーザーの識別を行うサイトは必ずセッションの機能を使ってします。
session を使うときは以下のように記述します。
1 2 3 4 5 |
<?php session_start(); $_SESSION[‘username’] = "genjin"; echo $_SESSION[‘username’] ; ?> |
削除する場合は、
1 |
unset($_SESSION[‘username’] ); |
とします。
全てのセッションを1回で削除する場合は、以下を使用します。
1 |
session_destroy () ; |
sessionを使ってもそのデータを紐づけているデータはブラウザ上のcookieに保存されているのでcookieの値が消えればセッションデータにもアクセスできなくなります(GET送信でアドレスに含めることもできますがここでは触れません)。sessionの有効期限は、php.iniの設定値を書き換えるか.htaccessで設定する必要があります。
配列をsessionに保存
セッションは、配列も扱えます。以下の配列も有効です。
1 2 3 4 5 6 7 8 9 10 11 |
<?php session_start(); $_SESSION['arr'] = array( '値A', '値B', '値C' ); header("Content-type: text/html; charset=utf-8"); echo $_SESSION['arr'][0]; echo "<br>"; echo $_SESSION['arr'][1]; echo "<br>"; echo $_SESSION['arr'][2]; ?> |
ブラウザで実際に表示してみてください。