2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【PHP】スーパーグローバル変数$_COOKIE

2
Posted at

$_COOKIEとは

$_COOKIEとは、PHP定義済み変数の1つで、クッキー(Cookie)システムによってHTTPクッキーから渡された値の変数であり、連想配列で使用します。

・クッキー(Cookie)とは、ウェブサーバーとウェブブラウザの間で状態を管理する機構、または機構による保存データ自体のこと
・クッキー(Cookie)は、ユーザーとサーバー間の状態を管理する機能を提供する
・クッキー(Cookie) は、固有のユーザを識別できる

cookie と session の違い

・cookieもsessionも情報を保存するために使用される。
・cookieはクライアント側のマシン(主にブラウザ)にのみ保存され、sessionはブラウザだけでなく、サーバーにも情報が保存される。
・保存の期間も異なり、sessionはユーザーがブラウザを閉じるか、サイトを離れると情報が削除されます。
一方cookieには永続クッキーがあり、情報を保持し続けることも可能です。

使い方

クッキーを保存するには、setcookie()関数を使用します。

保存したクッキーを取得するには、setcookie()関数でクッキーの名前を引数に設定し、そのクッキー名を配列のキー値とし取得する。
変数 = $_COKKIE['キー値']

クッキーを削除するには、setcookie()関数の第3引数の有効期限を現在より前(マイナス)に設定する。

setcookie()関数

setcookie()関数とは、名前の通りクッキーに値を登録する。
また、 任意のクッキーをクライアントの Webブラウザに送信します。

setcooki()関数は、第7引数まで設定することができ、返り値は、クッキーの送信に成功した場合には true を、その他の場合は false を返す。

書式
<?php
setcookie(
   string $name,
   string $valule,
   int $expires,
   string $path,
   string $domain,
   bool $secure,
   bool $httponly
); bool
引数
1. $name - クッキーの名前
2. $value - クッキーの値
3. $expires - クッキーの有効期限 (Unix タイムスタンプなので Epoch(1970 1 1)からの経過秒数となります)
4. $path - クッキーを有効とするパス
5. $domain - クッキーを有効とするドメイン
6. $secure - true を指定するとセキュアな通信HTTPS接続の場合にのみクッキーを送信しますデフォルトはfalse
7. $httponly - true を指定するとHTTPのみがクッキーにアクセスできますデフォルトはfalse

サンプル

  • setcookie()関数 を定義しクッキーを送信します。送信された内容はクッキーに登録されます。
    ※setcookie()関数は、あらゆる出力の前に記述しなければならない。ヘッダー(header)情報、<DOCTYPE>タグ、<html>タグ、空白、echo、print などより前。
クッキー送信
<?php
$value = "この文字列データがクッキーで送信されます";

// クッキー名は"testCookie1"
setcookie("testCookie1", $value);

// 秒数で指定のため有効期限は1時間
setcookie("testCookie2", $value, time()+60*60); 

// 有効期限は30日間で、サーバー上のクッキーの有効パスは"test/php/"、ドメインは"qiita.com"
setcookie("testCookie3", $value, time()+60*60*24*30, "/test/php/", "", false, true);
  • 登録したクッキーの内容は、スーパーグローバル変数 $_COOKIE で取得します。連想配列のキー名はクッキー名を使用します。
クッキー取得
<?php
$testCookie1 = $_COOKIE["testCookie1"];
$testCookie2 = $_COOKIE["testCookie2"];
$testCookie3 = $_COOKIE["testCookie3"];

echo $testCookie1;
echo $testCookie2;
echo $testCookqiita.comie3;
// 注意: 2回目以降のアクセスで表示される

実行結果
この文字列データがクッキーで送信されます
この文字列データがクッキーで送信されます
この文字列データがクッキーで送信されます
// "testCookie3"は https://qiita./test/php/test.php が有効となるパスとドメインである
  • 最後に、クッキーの削除です。有効期限を設定していない場合は、ブラウザを閉じた時点でクッキーが削除される
    クッキーを削除するには、setcookie()関数の第3引数である有効期限を、現在より過去の日時に設定します。(過去であれば何秒でも何時間でも問題ない)
クッキーの削除
<?php
setcookie("testCookie1", "", time()-60);
setcookie("testCookie2", "", time()-60);
setcookie("testCookie3", "", time()-60, "/test/php/");
// パス指定してる場合は、指定しないと削除されないので注意

参考


著者: E.R (株式会社ウィズツーワン)
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?