Php-cookies

提供:Dev Guides
移動先:案内検索

PHP-クッキー

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

戻ってくるユーザーを識別するには、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=finddevguides.com
Connection: close
Content-Type: text/html

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

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

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は、Cookieを設定するための* setcookie()*関数を提供しました。 この関数は最大6つの引数を必要とし、<html>タグの前に呼び出す必要があります。 Cookieごとに、この関数を個別に呼び出す必要があります。

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

ここにすべての引数の詳細があります-

  • 名前-これはクッキーの名前を設定し、HTTP_COOKIE_VARSと呼ばれる環境変数に保存されます。 この変数は、Cookieへのアクセス中に使用されます。
  • -これは名前付き変数の値を設定し、実際に保存したいコンテンツです。
  • 有効期限-これは、1970年1月1日のグリニッジ標準時00:00:00からの将来の時間を秒単位で指定します。 この時間が経過すると、Cookieにアクセスできなくなります。 このパラメーターが設定されていない場合、Webブラウザーが閉じられると、Cookieは自動的に期限切れになります。
  • パス-これは、Cookieが有効なディレクトリを指定します。 単一のスラッシュ文字により、Cookieはすべてのディレクトリで有効になります。
  • ドメイン-これは、非常に大きなドメインのドメイン名を指定するために使用でき、有効にするために少なくとも2つのピリオドを含む必要があります。 すべてのCookieは、それらを作成したホストとドメインに対してのみ有効です。
  • セキュリティ-これを1に設定すると、CookieをHTTPSを使用した安全な送信でのみ送信するように指定できます。それ以外の場合は、通常のHTTPでCookieを送信できる0に設定します。

次の例では、2つのCookie nameage が作成され、これらの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()*関数を使用して、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を使用したCookieの削除

公式には、Cookieを削除するには、name引数のみを指定してsetcookie()を呼び出す必要がありますが、これは常に適切に機能するとは限らず、依存しないでください。

すでに期限が切れている日付でクッキーを設定することが最も安全です-

<?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>