クッキーはWebブラウザーに少量のデータを保存しておくことができる仕組みです。クライアント側にデータを保存しておき、クライアントからのリクエストと一緒にクッキーのデータを送信します。サーバーはそのリクエストと共にデータを受信して処理することができます。
phpでクッキーを使うには「$_COOKIE」変数を利用します。またクッキーにデータを保存するには「setcookie」関数を利用します。
関数名 | setcookie |
---|---|
パラメーターリスト | |
パラメター名 | 説明 |
string $name | クッキー名 |
string $value = “” | クッキーに保存する値 |
string $expires = 0 | クッキーの有効期限 |
返り値 | |
bool | 正常に実行されるとTRUE、失敗した場合FALSE |
○ ファイル
「POSTTest.php」ファイルをコピーして、次のPHPファイルをプロジェクトに追加してください。
ファイルの種類 | PHPファイル |
---|---|
ファイル名 | CookieForm.php |
○ プログラム
次のようにプログラムを記述してください。
CookieForm.php
○ 解説
3、10、17行目で、isset関数を使用しています。この関数は引数で指定した変数が存在しているかどうかを確認できます。存在していればTRUEを、存在していなければFALSEを返します。今回は、クッキー情報が存在していれば、クッキー情報をそれぞれのデータ用の変数に格納し、存在していなければ、それぞれのデータ用の変数に空文字列をセットしています。
それぞれのデータ用変数の内容を33、36、39行目のテキストボックスのデフォルト値として表示するようにしています。これにより、クッキーに情報があれば入力フォームに前回入力した内容が表示されるようになります。
次に、送信されたフォームデータをクッキーに保存するプログラムを作成しましょう。
○ ファイル
「POSTTest.php」ファイルをコピーして、次のPHPファイルをプロジェクトに追加してください。
ファイルの種類 | PHPファイル |
---|---|
ファイル名 | CookieTest.php |
○ プログラム
次のようにプログラムを記述してください。
CookieTest.php
○ 実行結果
○ 解説
3行目で、フォームで選択された「情報を保存する」チェックボックスの値を調べています。チェックが入っていればポストデータで送信されてくるため、isset関数でTRUEが返ってきます。その場合は$expires変数に現在から5分後の時間のデータを格納しています。FALSEの場合は$expires変数に現在から1分前の時間のデータを格納しています。
10~12行目で、setcookie関数を使ってクッキー情報を格納しています。第1引数にクッキー名、第2引数に保存するデータ、第3引数に有効期限を渡しています。これによりサーバーからWebブラウザーにレスポンスが返る時に、Webブラウザーにクッキーを操作する情報も一緒に渡されることになります。
有効期限は省略したり、0を設定したりするとクッキーはWebブラウザーを閉じるまでが有効期限となります。未来の時間を指定すると、その時間までクッキーは保持され、過去の時間を指定するとクッキーは有効期限切れとなり、Webブラウザーからクッキーが削除されます。
○ 実行結果(有効期限を過去にした場合、有効期限が切れた場合)
○ 解説
入力フォームで「情報を保存する」チェックボックスのチェックを外した状態で送信すると、過去の有効期限がセットされ、入力フォームに戻ると入力内容が消えていることを確認できます。また、入力フォームにクッキーのデータが表示されている状態で、5分後にWebブラウザーを更新しても、入力内容が消えていることを確認できます。