Cookieを利用する (Cookieへのデータの書き込みと読み込み) - PHP

PHPでCookieへの情報の読み込みと書き込みの方法を紹介します。

PHPではCookieへのデータの書き込みはsetcookie()関数を用います。また、データの読み込みは$_COOKIE変数を用います。

コード例

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
  </head>
  <body>
    <?php
    $val = $_POST['button1'];
    if ($val != null) {
      $data = $_POST['textBox1'];
      $timeout = time() + 10 * 86400; //現在の時刻 + 10日 *(24時間 * 60分 * 60秒)
       $path = '/';
      $domain = '';
      setcookie('MyData001', $data, $timeout, $path, $domain);
      header("Location: " . $_SERVER['PHP_SELF']);
    } else {
      echo($_COOKIE['MyData001']);
    }
    ?>
    <form method="post" action="">
      <input type="text" name="textBox1" />
      <input type="submit" name="button1" value="Cookie書き込み" />
    </form>
  </body>
</html>

解説

$val = $_POST['button1'];
にてPOSTされたボタン情報を取得します。

if ($val != null) {
にて、ボタン情報がnullか確認します。この確認で単純にページが呼ばれたのか、POSTされたためにページがリロードされたのかが判定できます。

$data = $_POST['textBox1'];
$timeout = time() + 10 * 86400; //現在の時刻 + 10日 *(24時間 * 60分 * 60秒)
$path = '/';
$domain = '';
Cookieに書き込むデータを準備します。データはPOSTされたtextBox1の内容とします。タイムアウトは10日間とします。

setcookie('MyData001', $data, $timeout, $path, $domain);
setcookie()関数を呼び出しCookieに情報を書き込みます。データの名前は'MyData001'とします。

header("Location: " . $_SERVER['PHP_SELF']);
ページをリロードします。setcookie()関数を呼び出しただけでは$_COOKIE変数には値が設定されないためページをリロードします。

echo($_COOKIE['MyData001']);
POSTによりページがリロードされなかった(通常のページアクセス)の場合は$COOKIE変数から'MyData001'の値をページに表示します。

実行結果

Cookie書き込み前


Cookie書き込み後 (ボタン押下後)


著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
最終更新日: 2024-01-06
作成日: 2011-01-27
iPentec all rights reserverd.