ホームページ  >  記事  >  バックエンド開発  >  PHP が Cookie を読み取る方法の正しい解釈_PHP チュートリアル

PHP が Cookie を読み取る方法の正しい解釈_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-15 13:33:24812ブラウズ

今日ご紹介する質問は、

  1. < ?php
  2. setcookie("CookieID", $USERID); に関するものです。
  3. ? >
  4. < HTML>
  5. <BODY >
  6. </BODY>
  7. </HTML>
  8. Cookie を読み取る PHP の setcookie 関数には、カンマで区切られた合計 6 つのパラメーターがあります。

Cookie の名前は文字列です (例: "CookieID")。コロン、カンマ、スペースを間に入れることはできません。このパラメータは必須ですが、他のパラメータはすべてオプションです。このパラメータのみを指定した場合、Cookie は削除されます。

Cookie の値は通常、$USERID などの文字列変数です。 ?? を割り当てて値の設定をスキップすることもできます。

クッキーの有効期限が切れる時間。省略した場合 (または値 0 を割り当てた場合)、Cookie はこのセッションの終了時に期限切れになります。このパラメータには、「24-Nov-99 08:26:00」のように、DD-Mon-YY HH:MM:SS で表される絶対時刻を指定できます。より一般的に使用されるのは、相対時間を設定することです。これは、time() 関数または mktime 関数を通じて実現されます。たとえば、time()+3600 を指定すると、Cookie は 1 時間後に期限切れになります。

Cookie を照合するために使用されるパス。サーバー上に同じ名前の Cookie 設定が複数ある場合、このパラメータは混乱を避けるために使用されます。 「/」パスを使用すると、このパラメータを省略した場合と同じ効果があります。 Netscape の Cookie 定義ではパスの前にドメイン名が置かれますが、PHP ではその逆であることに注意してください。


サーバーのドメイン名は、Cookie の照合にも使用されます。サーバーのドメイン名の前にドット (.) を置く必要があることに注意してください。例: ".friendshipcenter.com" 。 3 つ以上の点が存在しない限り、このパラメータは受け入れられないためです。

Cookieのセキュリティレベルは整数です。 1 は、この Cookie が「安全な」ネットワーク経由でのみ送信できることを意味します。 0 または省略された場合は、どのタイプのネットワークでも受け入れられることを意味します (117-102 117-202 117-301)。

Cookie と変数

PHP スクリプトがクライアントのブラウザから Cookie を抽出すると、自動的に変数に変換されます。例: CookieID という名前の Cookie は変数 $CookieID になります。Cookie の内容は HTTP_COOKIE_VARS 配列に報告され、この配列と Cookie の名前を通じてアクセスすることもできます。 CookieID ];


各ユーザーを覚えてください

上記の submitform.php3 ファイルを見てください。その機能は、顧客の名前をデータベースに追加することです。各ユーザーに一意のユーザー ID を割り当て、この ID を Cookie に入れて、ユーザーが Web サイトにアクセスするたびに、Cookie とその中のユーザー ID を通じてそのユーザーが誰であるかを知ることができるようにしたいと考えています。 MySQL は、各新しいレコードに自動的に番号を割り当てるように設定できます。この番号は 1 から始まり、その後は毎回自動的に 1 ずつ増加します。 1 行の SQL ステートメントで、そのようなフィールドをデータ テーブルに簡単に追加できます。これを

USERID:

ALTER TABLE dbnameADD COLUMNUSERID INT(11) NOT NULL

PRIMARY KEY AUTO_INCREMENT; と呼びます。

このフィールドにはいくつかの特別な設定を行いました。まず、「INT(11)」によってその型を 11 ビット整数として定義し、次に「NOT NULL」キーワードを使用してこのフィールドの値が NULL にならないようにし、次に「PRIMARY KEY」を使用してインデックスとして設定します。フィールドなので、検索が高速になります。最後に、「AUTO_INCREMENT」により、自動的にインクリメントされるフィールドとして定義されます。

ユーザーの名前をデータベースに入力したら、ブラウザーに Cookie を設定します。このときに使用されるのは、先ほど説明した USERID フィールドの値です:

<ol class="dp-xml"><li class="alt"><span><span class="tag"><</span><span>  ?php  </span></span></li><li><span>mysql_connect (localhost, username, password);  </span></li><li class="alt"><span>mysql_select_db (dbname);  </span></li><li><span>mysql_query ("INSERT INTO tablename (first_name, last_name) VALUES ("$first_name", "$last_name")");  </span></li><li class="alt"><span>setcookie("CookieID",  </span></li><li><span>mysql_insert_id(),  </span></li><li class="alt"><span>time()+94608000,  </span></li><li><span>"/"); /* 三年后 cookie 才会失效 */  </span></li><li class="alt"><span class="tag">?></span><span> </span>
</li>
</ol>
<p>PHP 関数 mysql_insert_id() は、最後の INSERT クエリが実行された後、AUTO_INCREMENT によって定義されたフィールドの値を返します。このようにして、ブラウザの Cookie をクリアしない限り、Web サイトは永久にそのユーザーを「記憶」します</p>
<p><strong>PHP は Cookie を読み取ります</strong></p>
<p>Amazon.com が行うようなスクリプトを書いてみましょう。まず、PHP スクリプトはクライアントのブラウザが Cookie を送信したかどうかを確認し、送信されている場合はユーザーの名前が表示されます。 Cookieが見つからない場合は、顧客に名前の登録を求めるフォームを表示し、データベースに追加して、顧客の閲覧中にCookieを設定します。 </p>
<p>まず、Cookieの内容を表示しましょう: </p>
<pre class="brush:php;toolbar:false"><ol class="dp-xml"><li class="alt"><span><span class="tag"><</span><span>  ?php  </span></span></li><li><span>print $CookieID;  </span></li><li class="alt"><span class="tag">?></span><span> </span></span></li></ol>

次に、名前を表示します:

<ol class="dp-xml"><li class="alt"><span><span class="tag"><</span><span>  ?php  </span></span></li><li><span>mysql_connect (localhost, username, password);  </span></li><li class="alt"><span>mysql_select_db (dbname);  </span></li><li><span>$</span><span class="attribute">selectresult</span><span> = </span><span class="attribute-value">mysql_query</span><span> ("SELECT * FROM tablename WHERE </span><span class="attribute">USERID</span><span> = </span><span class="attribute-value">"$CookieID"</span><span>");  </span></li><li class="alt"><span>$</span><span class="attribute">row</span><span> = </span><span class="attribute-value">mysql_fetch_array</span><span>($selectresult);  </span></li><li><span>echo " 欢迎你的光临 ", $row[first_name], "!";  </span></li><li class="alt"><span class="tag">?></span><span>   </span></span></li></ol>

以上がPHPでCookieを読み込む具体的な実装方法です。


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/446055.html技術記事今日紹介する問題は? php setcookie(CookieID,$USERID); ? Cookie を読み取る PHP の setcookie 関数には、カンマで区切られた合計 6 つのパラメータがあります。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。