TECH I.S.

PHP setcookie() 関数

❮ PHP ネットワークリファレンス

次の例では、値が「John Doe」の「user」という名前の Cookie を作成します。 Cookie は 30 日 (86400 * 30) 後に期限切れになります。 「/」は、Cookie が Web サイト全体で使用できることを意味します (そうでない場合は、好みのディレクトリを選択してください)。

次に、Cookie「user」の値を取得します (グローバル変数 $_COOKIE を使用)。また、isset() 関数を使用して、Cookie が設定されているかどうかを確認します。

<!DOCTYPE html> <?php $cookie_name = "user"; $cookie_value = "John Doe"; setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day ?> <html> <body> <?php if(!isset($_COOKIE[$cookie_name])) {     echo "Cookie named '" . $cookie_name . "' is not set!"; } else {     echo "Cookie '" . $cookie_name . "' is set!<br>";     echo "Value is: " . $_COOKIE[$cookie_name]; } ?> </body> </html>


定義と使用法

setcookie() 関数は、残りの HTTP ヘッダーと一緒に送信される Cookie を定義します。

Cookie は、多くの場合、ユーザーを識別するために使用されます。 Cookie は、サーバーがユーザーのコンピューターに埋め込む小さなファイルです。同じコンピューターがブラウザーでページを要求するたびに、Cookie も送信されます。 PHP を使用すると、Cookie 値の作成と取得の両方を行うことができます。

Cookie の名前は、同じ名前の変数に自動的に割り当てられます。たとえば、Cookie が「user」という名前で送信された場合、Cookie 値を含む $user という変数が自動的に作成されます。

注:setcookie() 関数は、<html> タグの前に表示する必要があります。

注:Cookie の値は、Cookie の送信時に自動的に URL エンコードされ、受信時に自動的にデコードされます。 (URL エンコードを防ぐには、代わりにsetrawcookie()を使用します)

構文

setcookie(name, value, expire, path, domain, secure, httponly);

パラメータ値

パラメータ

説明

name 必須。クッキーの名前を指定します
value オプション。クッキーの値を指定します
expire オプション。 Cookie の有効期限を指定します。値: time()+86400*30 は、Cookie が 30 日で期限切れになるように設定します。このパラメーターを省略するか、0 に設定すると、Cookie はセッションの終了時 (ブラウザーが閉じるとき) に期限切れになります。デフォルトは 0 です
path オプション。 Cookie のサーバー パスを指定します。 「/」に設定すると、Cookie はドメイン全体で使用可能になります。 「/php/」に設定すると、Cookie は php ディレクトリと php のすべてのサブディレクトリ内でのみ利用可能になります。デフォルト値は、Cookie が設定されている現在のディレクトリです。
domain オプション。 Cookie のドメイン名を指定します。 example.com のすべてのサブドメインで Cookie を利用できるようにするには、ドメインを「example.com」に設定します。 www.example.com に設定すると、Cookie は www サブドメインでのみ使用可能になります。
secure オプション。安全な HTTPS 接続を介してのみ Cookie を送信するかどうかを指定します。 TRUE は、安全な接続が存在する場合にのみ Cookie が設定されることを示します。デフォルトは FALSE です
httponly オプション。 TRUE に設定すると、HTTP プロトコルを介してのみ Cookie にアクセスできます (スクリプト言語からは Cookie にアクセスできません)。この設定は、XSS 攻撃による個人情報の盗難を減らすのに役立ちます。デフォルトは FALSE です


技術的な詳細



戻り値:

成功した場合は TRUE。失敗した場合は FALSE

PHP バージョン:

4+

PHP 変更ログ:

PHP 5.5 - クライアントに送信される Set-Cookie ヘッダーに Max-Age 属性が含まれていました。

PHP 5.2 - httponly パラメータが追加されました


その他の例

Cookie のいくつかの有効期限:

<?php $value = "Hello world!"; // cookie will expire when the browser close setcookie("myCookie", $value); // cookie will expire in 1 hour setcookie("myCookie", $value, time() + 3600); // cookie will expire in 1 hour, and will only be available // within the php directory + all sub-directories of php setcookie("myCookie", $value, time() + 3600, "/php/"); ?> <html> <body> ...some code... </body> </html>

Cookie を変更するには、setcookie() 関数を使用して Cookie を (再度) 設定します。

<?php $cookie_name = "user"; $cookie_value = "Alex Porter"; setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); ?> <html> <body> <?php if(!isset($_COOKIE[$cookie_name])) {     echo "Cookie named '" . $cookie_name . "' is not set!"; } else {     echo "Cookie '" . $cookie_name . "' is set!<br>";     echo "Value is: " . $_COOKIE[$cookie_name]; } ?> </body> </html>

Cookie を削除するには、過去の有効期限で setcookie() 関数を使用します。

<?php // set the expiration date to one hour ago setcookie("user", "", time() - 3600); ?> <html> <body> <?php echo "Cookie 'user' is deleted."; ?> </body> </html>

Cookie が有効かどうかを確認する小さなスクリプトを作成します。まず、setcookie() 関数でテスト Cookie を作成してから、$_COOKIE 配列変数をカウントします。

<?php setcookie("test_cookie", "test", time() + 3600, '/'); ?> <html> <body> <?php if(count($_COOKIE) > 0) {     echo "Cookies are enabled."; } else {     echo "Cookies are disabled."; } ?> </body> </html>


❮ PHP ネットワークリファレンス


プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細