Cookieを体験してみよう①
publicディレクトリに、cookie1.php、cookie2.php、cookie3.php、cookie4.phpを作成してください。
サーバから生成されたCookieがブラウザにて保存される
まずは、サーバにリクエストを送信して、Cookieを生成する流れをcookie1.php、cookie2.phpで体験してみましょう。
◆cookie1
ブラウザ(クライアント)からApacheサーバに cookie1.php へのリクエストを送信します。 Apacheサーバは cookie1.php のHTMLをレスポンスしますが、この時点ではまだCookieは生成されていません。 イラストで表すと以下のようになります。

ブラウザは、cookie1.php の内容を画面に表示します。(下図はユーザー名「神戸」を入力した状態)

cookie1.php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cookie1</title>
</head>
<body>
<h3>Cookie1</h3>
<form method="POST" action="cookie2.php">
ユーザー名:<input type="text" name="user_name">
<input type="submit" value="送信">
</form>
</body>
</html>
この画面で、ユーザー名に「神戸」と入力し、送信ボタンを押すと、cookie2.phpにデータが送信されます。
◆cookie2
cookie2.php は、受信した「ユーザー名」の値(神戸)をもとにクッキー名cookie_name でCookieを生成します。 そして、「神戸さん、ようこそ!」のHTMLとともに、生成したCookieをクライアントにレスポンスします。
ブラウザは、送信されてきたCookieを保存し、cookie2.php の内容を画面に表示します。イラストと画面表示は次のようになります。 

「クッキーデータを確認する」リンクをクリックすると、保存したCookieデータとともに cookie3.php へのリクエストをApacheサーバに送信します。(保存したデータとは、クッキー名:cookie_name、値:神戸の組み合わせ)
cookie2.php
<?php
if (isset($_POST['user_name']) && $_POST['user_name'] != '') { // ①
$user_name = $_POST['user_name']; // ②
setcookie('cookie_name', $user_name, time() + 10, '/'); // ③
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cookie2</title>
</head>
<body>
<h3>Cookie2</h3>
<?php
if (isset($user_name)) {
echo '<p>' . $user_name . 'さん、ようこそ!</p>';
echo '<a href="cookie3.php">クッキーデータを確認する</a>';
} else {
echo '<p>名前が入力されていません。</p>';
echo '<a href="cookie1.php">cookie1.phpに戻る</a>';
}
?>
</body>
</html>
【解説】
①: if(isset($_POST['user_name']) && $_POST['user_name'] != '') {
パラメータ名 user_name でデータが送られてきていることを確認しています。
isset($_POST['user_name'])- PHPの
isset( )関数で、$_POST['user_name']の値があればTrueを返します。
- PHPの
$_POST['user_name'] != ''$_POST['user_name']の値が「空文字」でなければTrueを返します。
②: $user_name = $_POST['user_name'];
パラメータ名 user_name で送られてきた値を取得しています。
③: setcookie('cookie_name', $user_name, time( ) + 10, '/');
送られてきた値をクッキー名 cookie_name で保存するクッキーデータを用意します。 このとき、第3引数の time( ) + 10 でクッキーの有効期限を設定しています。
time( ) 関数は、PHPで定義されている関数で、現在時刻をUnixエポック(1970年1月1日 00:00:00 GMT)からの 通算秒 として返す関数で、time( ) + 10 で現在時刻から10秒間だけ有効なクッキーとしています。 以下はもう少し複雑な例です。
-
有効期限を現在時刻から3日間とする場合
time( ) + 60 * 60 * 24 * 3 // ※60(秒) * 60(分) * 24(時間) * 3(日) = 259,200(秒)
有効期限を指定しない場合は、クライアント側のブラウザが閉じられると消えてしまうクッキーとなります。
この時点で、生成されたCookieは、ブラウザに保存されるので、ブラウザの「F12」キーを押してデベロッパーツールを開き、「アプリケーション」タブの「Cookies」を選択すると、以下のように表示されます。 生成されたCookieの値が日本語の場合は、添付画像のようにブラウザでエンコードされて表示されます。
