ホームページ  >  記事  >  バックエンド開発  >  PHPセッション制御用Cookieの詳細説明

PHPセッション制御用Cookieの詳細説明

小云云
小云云オリジナル
2018-03-26 14:24:381951ブラウズ

1. Cookie とは:

Cookie という複数形で使用されることもあります。これは、ユーザーの身元を特定し、セッション追跡を実行するために、一部の Web サイトによってユーザーのローカル端末に保存されるデータ (通常は暗号化されている) を指します。 。 Cookie の最も一般的な用途は、登録ユーザーが Web サイトにログインしたかどうかを判断することです。ユーザーは、ログイン手順を簡素化するために、次回 Web サイトにアクセスするときにユーザー情報を保持するかどうかを尋ねられることがあります。もう 1 つの重要なアプリケーションは、「ショッピング カート」処理です。ユーザーは一定期間内に同じ Web サイトの異なるページで異なる商品を選択する場合があります。この情報は Cookie に書き込まれ、最終的な支払い時に情報を取得できるようになります。

利点:

優れた互換性

欠点:

1. ネットワーク トラフィックの増加。

2. データ容量は制限されており、ブラウザによって異なります。 Cookie を削除するため、プログラムの機能に影響を与えます。

3. 安全ではありません。複数のユーザーがコンピュータを共有する場合、Cookie を使用すると、ユーザーのプライバシーが漏洩し、セキュリティ上の問題が発生する可能性があります。

2. Cookie の仕組み:

Cookie は、Web サーバーによってユーザーのハードドライブに保存されるテキストであり、いくつかの「キーと値」のペアが保存されます。各 Web サイトはユーザーのマシンに Cookie を保存し、必要に応じて Cookie データを取得できます。通常、Web サイトには Cookie ファイルがあります。ユーザーはサイト A にアクセスするたびに、サイト A の Cookie ファイルを検索します。このファイルが存在する場合は、そこからユーザー名とパスワードの「キーと値」のペアのデータが読み取られます。ユーザー名とパスワードの「キーと値」ペアのデータが見つかった場合は、アクセス要求とともにサイト A に送信されます。サイト A がアクセス要求の受信時にユーザー名とパスワードの「キーと値」データも受信した場合、サイト A はログインにユーザー名とパスワードのデータを使用するため、ユーザーはユーザー名とパスワードを入力する必要がありません。ユーザー名とパスワードの「キーと値」のペアのデータが受信されない場合は、その時点でユーザーが以前に正常にログインしていないことを意味し、サイト A はユーザーにログイン ページを返します。また、各Cookieには有効期限があり、有効期限が切れたCookieは使用できなくなります。 一般的に使用される Cookie 操作は、Cookie データの設定、Cookie データの読み取り、指定された Cookie データの削除です。

構文:

bool setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] )

setcookie() は、残りの HTTP ヘッダーとともにクライアントに送信される Cookie を定義します。 他の HTTP ヘッダーと同様に、スクリプトが出力を生成する前に Cookie を送信する必要があります (プロトコルの制限のため)。 出力 (100db36a723c770d327fc0aef2ce13b1 と 93f0f5c25f18dab9d176bd4f6de5d30e またはスペースを含む) を生成する前に、この関数を呼び出してください。 Cookie が設定されると、次回ページを開いたときに $_COOKIE を使用して読み取ることができます。 Cookie の値は $_REQUEST にも存在します

name: Cookie 名。

value: Cookie の値。 この値はユーザーのコンピュータに保存されます。機密情報は保存しないでください。 たとえば、名前は「cookiename」で、その値は $_COOKIE[「cookiename」] を通じて取得できます。

expire: Cookie の有効期限。 これは Unix タイムスタンプで、Unix エポック (1970 年 1 月 1 日 00:00:00 GMT) からの秒数です。 言い換えれば、基本的には time() 関数の結果に期限切れにする秒数を加えたものを使用できます。 または、mktime() を使用することもできます。 time()+60*60*24*30 は、Cookie が 30 日後に期限切れになるように設定します。 ゼロに設定した場合、またはパラメータを省略した場合、Cookie はセッションの終了時 (つまり、ブラウザが閉じられたとき) に期限切れになります。

path: Cookie の有効なサーバーのパス。 「/」に設定すると、Cookie はドメイン名ドメイン全体に対して有効になります。 「/foo/」に設定されている場合、Cookie はドメイン内の /foo/ ディレクトリとそのサブディレクトリ (/foo/bar/ など) に対してのみ有効です。 デフォルト値は、Cookie が設定されているときの現在のディレクトリです。

domain: Cookie の有効なドメイン/サブドメイン名。 これをサブドメイン (例: 「www.example.com」) に設定すると、Cookie がこのサブドメインとその第 3 レベルのドメイン (例: w2.www.example.com) に対して有効になります。 Cookie をドメイン全体 (そのすべてのサブドメインを含む) に対して有効にするには、Cookie をドメイン名 (この場合は「example.com」) に設定するだけです。

secure: この Cookie が安全な HTTPS 接続を通じてのみクライアントに渡されるかどうかを設定します。 TRUE に設定すると、安全な接続が存在する場合にのみ Cookie が設定されます。 この要件がサーバー側で処理される場合、プログラマは安全な接続 ($_SERVER["HTTPS"] によって決定される) を介してそのような Cookie を送信するだけで済みます。

httponly: TRUE に設定すると、Cookie は HTTP プロトコル経由でのみアクセスできます。 これは、JavaScript などのスクリプト言語を介して Cookie にアクセスできないことを意味します。偽です。制限はありません。

戻り値

この関数を呼び出す前に出力が生成された場合、setcookie() は失敗し、FALSE を返します。 setcookie() が正常に実行された場合は TRUE を返します。もちろん、これはユーザーが Cookie を受け入れたかどうかを意味するものではありません。

Cookieの設定と読み取り

<?php
    $value="my cookie value"; //发送一个简单的cookie
    setcookie("testcookie",$value,time()+60);  //set cookie?><!DOCTYPE html><html><head>
    <meta charset="UTF-8">
    <title>Testcookie</title></head><body>
    <?php 
        if(isset($_COOKIE["testcookie"])) //判断是否存在
            echo($_COOKIE["testcookie"]."<br>");
        print_r($_COOKIE);    ?></body></html>

Cookieの削除

Cookieを削除するには、ブラウザの削除メカニズムをトリガーするために有効期限を過去に設定する必要があります。

6cea04fb82bc3707e126c08c4226c5fb

用于记录当前用户访问网站的次数:

<?php

   if(isset($_COOKIE["num"]))        $num=$_COOKIE["num"];    else
       $num=0;                        //首次设置cookie

       $num=$num+1;                 
   setcookie("num",$num,time()+60*60) //发送一个cookie num记录访问次数?><!DOCTYPE html><html><head>
   <meta charset="UTF-8">
   <title>Testcookie</title></head><body>
   <?php 
       if($num>1)            echo("您已经第".$num."次访问本站点了。");        else
           echo("欢迎首次访问本站");        //关闭网页后,变量$num将被释放,但因为它的值已经保存再cookie中,所以下次打开网页会连续计数
   ?></body></html>

用户验证身份是验证cookie:

<?php  //身份验证cookie
   header("content-type:text/html;charset=utf-8");
   error_reporting(0);    //取输入的用户名和密码
       $uid=$_POST[&#39;username&#39;];        $upwd=$_POST[&#39;pwd&#39;];    //验证用户名和密码
   if($uid=="admin" && $upwd=="pass")
   {        echo("您已经登入成功,欢迎光临");        if($_POST[&#39;checkboxCookie&#39;]=="on")
       {
           setcookie("username",$uid,time()+60*60*24);
           setcookie("pwd",$upwd,time()+60*60*24);
       }
   }   
   else
       echo("登入失败,请返回重新登录");?><?php
   error_reporting(0);?><!DOCTYPE html><html><head>
   <meta charset="UTF-8">
   <title>Testcookie</title>
   <style type="text/css">form {    margin-top: 300px;    padding-left: 40%;}input[type="password"]{    margin-left: 16px;}input[type="reset"],input[type="submit"]{    margin-left: 80px;}</style></head><body>

   <form action="1.php" method="POST">

   <label>用户名:        <input type="text" name="uesrname" value=" <?php echo($_COOKIE["username"]);?>">    </label>
   <br><br>
                                                       <!-- 保留上次成功登入的用户名-->
   <lable>密码:    <input type="password" name="pwd" value="<?php echo($_COOKIE["password"]);?>" >    </lable>
                                                       <!-- 保留上次成功登入的用户名 -->
   <input type="checkbox" checked name="checkboxCookie">保留用户信息<br><br> <!-- 复选框 -->
   <input type="submit" name="put_info" value="登录">
   <input type="reset" name="rest_info" value="重置">
   </form></body></html>

相关推荐:

如何理解PHP中的会话控制

php中会话控制的深入理解

详细介绍php会话控制的实例代码

以上がPHPセッション制御用Cookieの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。