ログインを必要とするWebページを利用していると、

  1. あなたは○回目の訪問者です!と表示されたり(もう古い?)、
  2. 「good」「bad」ボタン機能があるようなWebページで一度そのボタンを押して1日後そのボタンを見ると押されている状態にあったり、
  3. 他のWEBページを一度見て、再び戻ってきた場合、ログインしている状態でそのWebページが見られる状態 にあることがあります。それを可能にするのがCookieです。 また、3の場合はSessionという方法でそれが実現できることはありますが、Cookieでもできます。 今回はそんな方法について説明していきたいと思います。10月16日記事

    目次



CookieとSession

ユーザの情報を一時的に保管し、サービスに必要な情報や値などを保存する方法です。Sessionはサーバ側に保存するのに対し、Cookieはクライアント側に保存します。 今回Cookieを作るということで、クライアント側のCookieを確認していきたいと思います。

Cookieを確認する。

クライアント側ということは、各自のパソコンにそのファイルが保存されているはずです。IEを中心に見ていきましょう。 IE11の場合[設定]→[全般(タブ)]→[閲覧の履歴の設定ボタン]→[ファイルの表示]を押してみましょう。すると、

C:\Users\名前\AppData\Local\Microsoft\Windows\INetCache

に様々なファイルが保存されていると思います。その中でCookieと見えるのがCookieファイルです。 実際にダブルクリックをしてみるとその内容を見ることができます。 要はこのファイルの作り方を学ぶということです。

PHPでCookieを発行する


コードを書きますが、 まだ確認しにいかないでください。確認用のconfirm.phpの方を先に行き挙動を確認してみてください。 発行(index.php)

<?php
$issue = setcookie("visited",1);

?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>クッキーの発行</title>
</head>
<body>
<?php
//返り値はセットされていれば1なので
if($issue){
	print '<p>発行されました。</p>';
}else{
	print '<p>発行失敗しました。</p>';
}
?>
<a href="confirm.php">クッキーの内容確認</a>
</body>
</html>



確認(confirm.php)

<?php
//もしクッキーが発行されていたら、その値を取得し一つたす。
if(isset($_COOKIE["visited"])){
	$cnt = $_COOKIE["visited"] + 1;
}else{
	$cnt = 1;
}
//クッキーが発行されていれば再びその値をクッキーに埋め込む。
if(isset($_COOKIE["visited"])){
	setcookie("visited", $cnt);
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>訪問回数</title>
</head>
<body>
<p>訪問回数は<?php echo $cnt;?>回です。</p>
</body>
</html>



先にconfirm.phpの方を確認しに行ってください。どんだけ更新ボタンを押しても1回のままです。 そこで、一度index.phpの方にいってから再びconfirm.phpに行くと更新ボタンを押していくと2回、3回と増えていくはずです。

まとめ

setcookieという関数を利用して発行することと、cookieの発行はグローバル変数$_COOKIE["名前"]というような感じで使っていくということです。

以上

最終更新:2015年10月14日 00:13