機能概要

「クッキー」は、変数のように値を同一サイト内で共有できます。Webブラウザを閉じてから、再度、サイトにアクセスしても値を取得することができます。また、ログイン情報を記憶し、再アクセス時に、自動ログインする場合に使用します。

注意点

クッキーは、ブラウザにテキストデータとして保存されているため、パスワードやクレジットカード情報など機密情報を扱うことはやめましょう。

また、設定でクッキーを利用しないユーザーもいます。その場合、値が取得できないので注意が必要です。

プログラミングコード

  • クッキーに書き込む
    setcookie('uid',$txt_uid, time()+3600); 
    →引数は「名前」「値」「有効期限」だと考えると良い。有効期限は、秒単位です。上記の有効期限は1時間(60秒×60分)
  • クッキーを削除する
    setcookie('uid',$txt_uid, time()-1);
    →引数の期間にマイナスすると削除。
  • クッキーから値を取得する
    $_COOKIE['uid'])

「cookie.php」クッキー登録/削除ページファイル

  • 6行目:クッキー「$_COOKIE[‘uid’]」に値が登録されているかをチェック。登録されている場合には、変数「$txt_uid」に値を代入する。
  • 11~20行目:「send」ボタンを押されたら、代入処理を実行します。
  • 15行目:記憶するチェックボックスにチェックがある場合、画面で入力された内容をクッキーに値を代入します。
  • 21~25行目:「delete」ボタンを押されたら、クッキーの中身を削除を実行します。
<?php
    $txt_uid = "";
    $chk_cookie = "";

    //クッキーが登録されているかをチェック
    if (isset($_COOKIE['uid'])){
        $txt_uid = $_COOKIE['uid'];
    }

    if($_SERVER['REQUEST_METHOD'] === 'POST'){
        if (isset($_POST['send'])) {
            // 送信
            //POSTデータの取得
            $chk_cookie = $_POST['chk_cookie'];
            if($chk_cookie == "1"){
                //代入
                $txt_uid = $_POST['txt_uid'];
                setcookie('uid',$txt_uid, time()+3600); //有効期限は1時間(60秒×60分)
            }
        }
        if (isset($_POST['delete'])) {
            // 削除
            setcookie('uid',$txt_uid, time()-1);
            $txt_uid = "";
        }
    }
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
</head>
<body>
<p>
    <h2>クッキーを記憶する</h2>
</p>
<div>uid:<?php echo $txt_uid ?></div>
<form action="cookie.php" method="post">
    <p>クッキーに記憶する</p>
    <input type="text" name="txt_uid" >
    <input type="checkbox" name="chk_cookie" value="1">
    <p><input type="submit" name="send" value="送信"></p>
    <p><input type="submit" name="delete" value="削除"></p>
</form>
</body>
</html>

演習問題

  1. 上記のコードを使用して、ファイル作成し、動作するようにしてみよう。
  2. 前単元で学習した、ログインページにクッキーを組み込み、自動ログイン機能を実装してみよう。