PHPクッキー~PHP TUTORIAL~: PHP入門 :

スポンサーリンク

本当にわからないとこがあった場合一人では解決できません。
『teratail』とはエンジニア特化型のQ&Aサイトです。 すべてのエンジニアさんが抱えている悩みを共有して 解決するための質問サイトです
無料なのでまずは登録して使ってみてください。メールアドレスだけで登録可能です ----------------------------------------------------------------------------------------

3ヶ月10万円で受講できる転職特化型Ruby実践研修【ポテパンキャンプ】

PHPクッキー

 

 

 

 

 

 

 

 

クッキーは、クライアントコンピュータに保存されたテキストファイルであり、使用目的の追跡のために保管されます。PHPは透過的にHTTP Cookieをサポートしています。決して食べ物ではありません。笑 クッキーがのこるとかの表現はここからきています。

再訪するユーザーを特定するには、3つのステップが必要です。

  • サーバースクリプトは、一連のCookieをブラウザに送信します。例えば、名前、年齢、識別番号など
  • ブラウザは、この情報を今後サイトに訪れた場合のためにローカルマシンに保存します。
  • 次回ブラウザがWebサーバーに要求を送信すると、サーバーはそのCookie情報をサーバーに送信し、サーバーはその情報を使用してユーザーを識別します。

この章では、Cookieを設定する方法、Cookieにアクセスする方法、Cookieを削除する方法について説明します。

クッキーの内容

通常、CookieはHTTPヘッダーに設定されます(ただし、JavaScriptはブラウザーに直接Cookieを設定することもできます)。クッキーを設定するPHPスクリプトは、このようなヘッダを送ることがあります。

HTTP/1.1 200 OK
Date: Fri, 04 Feb 2017 21:03:56 GMT
Server: Apache/1.3.9 (UNIX) PHP/5.0b3
Set-Cookie: name=xyz; expires=Friday, 17-Feb-07 22:03:38 GMT; 
                 path=/; domain= google.com
Connection: close
Content-Type: text/html

お分かりのように、Set-Cookieヘッダーには、名前の値のペア、GMTの日付、パス、およびドメインが含まれています。名前と値はURLエンコードされます

expiresフィールドは、指定された時刻と日付の後にクッキーを "忘れる"ようにブラウザに指示するものです。

ブラウザがクッキーを保存するように設定されている場合、ブラウザは有効期限までこの情報を保持します。ユーザーがCookieのパスとドメインに一致する任意のページでブラウザをポイントすると、Cookieがサーバーに再送信されます。ブラウザのヘッダーは次のようになります。

GET / HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)
Host: zink.demon.co.uk:1126
Accept: image/gif, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Cookie: name=xyz

PHPスクリプトは、すべてのクッキー名と値を保持する環境変数$ _COOKIEまたは$ HTTP_COOKIE_VARS []のクッキーにアクセスします。上記のCookieは$ HTTP_COOKIE_VARS [“name”]を使ってアクセスできます。


PHPでクッキーを設定する

PHPはcookieを設定するためにsetcookie()関数を提供しました。この関数は6つの引数を必要とし、<html>タグの前に呼び出される必要があります。各クッキーに対して、この関数は別々に呼び出さなければなりません。

setcookie(name, value, expire, path, domain, security);

ここにすべての議論の詳細があります –

  • 名前 - これはCookieの名前を設定し、HTTP_COOKIE_VARSという環境変数に格納されます。この変数は、Cookieにアクセスする際に使用されます。
  • Value - これは、名前付き変数の値を設定します
  • Expiry - これは、1970年1月1日の00:00:00 GMTからの先の時間を秒単位で指定します。この時間が経過すると、クッキーにアクセスできなくなります。このパラメータが設定されていないと、Webブラウザが閉じられたときにCookieが自動的に期限切れになります。
  • パス - クッキーが有効なディレクトリを指定します。単一のスラッシュ文字を使用すると、すべてのディレクトリでCookieが有効になります。
  • ドメイン - これは、非常に大きなドメインでドメイン名を指定するために使用することができ、少なくとも2つの期間を有効にする必要があります。すべてのクッキーは、それらを作成したホストおよびドメインに対してのみ有効です。
  • セキュリティ - これを1に設定すると、HTTPSを使用した安全な送信によってのみCookieが送信されるように指定することができます。そうでない場合、通常のHTTPによってCookieを送信できることを意味する0に設定されます。

次の例は、2つのクッキーを作成します これらのクッキーは、1時間後に期限切れになります。

<?php
   setcookie("name", "John Watkin", time()+3600, "/","", 0);
   setcookie("age", "36", time()+3600, "/", "",  0);
?>
<html>
   
   <head>
      <title>Setting Cookies with PHP</title>
   </head>
   
   <body>
      <?php echo "Set Cookies"?>
   </body>
   
</html>

PHPでクッキーにアクセスする

PHPはクッキーにアクセスする多くの方法を提供しています。最も簡単な方法は、$ _COOKIEまたは$ HTTP_COOKIE_VARSのいずれかの変数を使用することです。以下の例は、上の例で設定されたすべてのクッキーにアクセスします。

<html>
   
   <head>
      <title>Accessing Cookies with PHP</title>
   </head>
   
   <body>
      
      <?php
         echo $_COOKIE["name"]. "<br />";
         
         /* is equivalent to */
         echo $HTTP_COOKIE_VARS["name"]. "<br />";
         
         echo $_COOKIE["age"] . "<br />";
         
         /* is equivalent to */
         echo $HTTP_COOKIE_VARS["age"] . "<br />";
      ?>
      
   </body>
</html>

isset()関数を使用して、Cookieが設定されているかどうかを調べることができます。

<html>
   
   <head>
      <title>Accessing Cookies with PHP</title>
   </head>
   
   <body>
      
      <?php
         if( isset($_COOKIE["name"]))
            echo "Welcome " . $_COOKIE["name"] . "<br />";
         
         else
            echo "Sorry... Not recognized" . "<br />";
      ?>
      
   </body>
</html>

PHPによるクッキーの削除

正式には、クッキーを削除するには、name引数を指定してsetcookie()を呼び出す必要がありますが、これは必ずしもうまくいくとは限りません。

すでに有効期限が切れている日付でCookieを設定するのが最も安全です。

<?php
   setcookie( "name", "", time()- 60, "/","", 0);
   setcookie( "age", "", time()- 60, "/","", 0);
?>
<html>
   
   <head>
      <title>Deleting Cookies with PHP</title>
   </head>
   
   <body>
      <?php echo "Deleted Cookies" ?>
   </body>
   
</html>

前のページ⑮PHP関数

次のページ⑰PHPのセッション

スポンサーリンク

プログラミングは独学からは挫折の可能性が高いです。まずは無料体験ができる
コードキャンプが本当におすすめ。無料体験でわからないところを聞きましょう。
転職補助つき。カリキュラム終了後に転職紹介をしてくれます。