PHP-クッキー

Cookieは、クライアントコンピューターに保存されるテキストファイルであり、追跡目的で使用されます。PHPはHTTPCookieを透過的にサポートします。

リピーターの特定には3つのステップがあります-

  • サーバースクリプトは、一連のCookieをブラウザに送信します。たとえば、名前、年齢、識別番号など。

  • ブラウザは、将来使用するためにこの情報をローカルマシンに保存します。

  • 次回ブラウザがWebサーバーに要求を送信すると、ブラウザはそれらのCookie情報をサーバーに送信し、サーバーはその情報を使用してユーザーを識別します。

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

クッキーの構造

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

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

ご覧のとおり、Set-Cookieヘッダーには、名前と値のペア、GMT日付、パス、およびドメインが含まれています。名前と値はURLエンコードされます。有効期限フィールドは、指定された日時の後にCookieを「忘れる」ようにブラウザに指示するものです。

ブラウザがCookieを保存するように構成されている場合、ブラウザは有効期限までこの情報を保持します。ユーザーが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の名前と値を保持する環境変数$ _COOKIEまたは$ HTTP_COOKIE_VARS []のCookieにアクセスできます。上記のCookieには、$ HTTP_COOKIE_VARS ["name"]を使用してアクセスできます。

PHPでCookieを設定する

PHPが提供 setcookie()クッキーを設定する機能。この関数には最大6つの引数が必要であり、<html>タグの前に呼び出す必要があります。Cookieごとに、この関数を個別に呼び出す必要があります。

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

これがすべての議論の詳細です-

  • Name−これはCookieの名前を設定し、HTTP_COOKIE_VARSと呼ばれる環境変数に保存されます。この変数は、Cookieにアクセスするときに使用されます。

  • Value −これは、名前付き変数の値を設定し、実際に保存するコンテンツです。

  • Expiry−これは、1970年1月1日の00:00:00 GMTからの将来の時刻を秒単位で指定します。この時刻を過ぎると、Cookieにアクセスできなくなります。このパラメータが設定されていない場合、Webブラウザを閉じるとCookieは自動的に期限切れになります。

  • Path−これはCookieが有効なディレクトリを指定します。スラッシュ文字を1つ使用すると、Cookieをすべてのディレクトリで有効にできます。

  • Domain−これは、非常に大きなドメインでドメイン名を指定するために使用でき、有効にするには少なくとも2つのピリオドが含まれている必要があります。すべてのCookieは、Cookieを作成したホストとドメインに対してのみ有効です。

  • Security −これを1に設定すると、HTTPSを使用した安全な送信によってのみCookieを送信するように指定できます。それ以外の場合は、0に設定します。これは、Cookieを通常のHTTPで送信できることを意味します。

次の例では、2つのCookieを作成します name そして age これらのCookieは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を使用したCookieへのアクセス

PHPは、Cookieにアクセスするための多くの方法を提供します。最も簡単な方法は、$ _ COOKIE変数または$ HTTP_COOKIE_VARS変数のいずれかを使用することです。次の例では、上記の例で設定されたすべてのCookieにアクセスします。

<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() クッキーが設定されているかどうかを確認する機能。

<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でCookieを削除する

公式には、Cookieを削除するには、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>