ホームページ  >  記事  >  php教程  >  PHP での Cookie の使用ガイド

PHP での Cookie の使用ガイド

WBOY
WBOYオリジナル
2016-06-13 12:33:10953ブラウズ

概要
Cookie は、サーバーまたはスクリプトが HTTP プロトコルの下でクライアント ワークステーション上の情報を維持するための方法です。 Cookie は、Web サーバーによってユーザーのブラウザに保存される小さなファイルであり、ユーザーに関する情報 (識別番号、パスワード、Web サイトでのユーザーの購入方法、ユーザーがサイトを訪問した回数など) が含まれる場合があります。ユーザーがサーバーに接続するたびに、Web サイトは Cookie 情報にアクセスできます。
Cookieを設定するにはどうすればよいですか?
PHP では、setcookie 関数を使用して Cookie を設定できます。 Cookie は HTTP ヘッダーの一部であるため、コンテンツがブラウザに送信される前に Cookie 関数を設定する必要があります。この制限は header() 関数と同じです。クライアントから渡された Cookie はすべて、自動的に PHP 変数に変換されます。 PHP は情報ヘッダーを取得して分析し、Cookie 名を抽出して変数に変換します。したがって、setcookie("mycookie", "Cookies") などの Cookie を設定すると、php は値 "Cookies" を持つ $mycookie という名前の変数を自動的に生成します。
setcookie 関数の構文を見てみましょう:
init setcookie(string CookieName, string CookieValue, int CookieExpireTime, path, domain, int secure);
パラメーターの説明:
PATH: 場所を表します。 Web サーバー上のディレクトリ。デフォルトは、呼び出されるページが配置されているディレクトリです。
ドメイン: Cookie が使用できるドメイン名。デフォルトは、呼び出されるページのドメイン名です。このドメイン名には 2 つの「.」が含まれている必要があるため、トップレベル ドメイン名を指定する場合は、「.mydomain.com」を使用する必要があります。
SECURE: 「1」に設定すると、Cookie はユーザーのブラウザによって認識されます 安全なサーバーによって記憶されます
Cookie の使用例
登録が必要なサイトがあるとします。ユーザーの ID が自動的に識別され、関連する操作が実行されます。ユーザーに情報を送信します。ユーザーが登録ユーザーでない場合は、登録ページへのリンクが表示されます。
上記の要件に従って、まず登録ユーザー情報(姓名、メールアドレス、来店カウンター)を保存するデータベースを作成します。
まず、次の手順に従ってテーブルを作成します。
mysql> データベース ユーザーを作成します。
クエリは OK、1 行が影響を受けました (0.06 秒)
mysql> データベースは変更されました
> mysql> create table info (FirstName varchar(20), LastName varchar(40), email varchar(40), count varchar(3));
クエリ OK、影響を受ける行は 0 (0.05 秒)
次に作成しますPHP ページ データベースに対して Cookie をチェックします。
PHP は識別可能な Cookie を対応する変数に変換できるため、「myCookies」という名前の変数を確認できます。
if (isset($myCookies)) { // Cookie がすでに存在する場合
= } else { //Cookie が存在しない場合
、explode 関数を使用して別の変数に分析し、カウンターを増やし、新しい Cookie を設定します。
$info =explode("&", $myCookies);
...
$count ;
$ CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;
SetCookie ("myCookies") ,$CookieString, time() 3600); //Cookie を設定します
次に、HTML ステートメントを使用してユーザー情報を出力します。
最後に、新しいカウンター値でデータベースを更新します。
この Cookie が存在しない場合は、登録ページ (register.php) へのリンクが表示されます。
次の register.php はユーザー登録ページです:
/* register.php */


First Name:
姓:

register.php 登録ページでユーザーが入力した情報は、regOK.php に送信されます。
/* regOK.php */
if ($FirstName および $LastName および $email ) {
… ...//データベースにユーザーが存在するか問い合わせます
}
}else{
……//エラー処理
}

上記プログラムの流れは次のとおりです。
まずすべてを確認します。必要な情報が入力されているかどうかを確認します。入力されていない場合は、戻って再入力します。
すべての情報が入力されている場合、最初に、ユーザーのログイン詳細をデータベース
Mysql_connect() または die ("データベースへの接続エラー!" );
$query="select * from info where FirstName='$FirstName' and LastName='$LastName' and email='$ email'";
$result = mysql_db_query("users", $query );
$info=mysql_fetch_array($result);
$count=$info["count"]; 新しい Cookie を作成する同じユーザーがデータベース ログインを持っていない場合は、新しいデータベース ログインを作成し、新しい Cookie を作成します。
次に、isset() 関数を使用して、ユーザーがカウンターを持っているかどうかを確認します。持っている場合は、カウンターがインクリメントされ、新しい Cookie が作成されます。
$count ; //カウンターを増やします。 CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count; SetCookie ("myCookies",$CookieString, time() 3600);ユーザーカウンターなし、 mysql にレコードを追加、Cookie
を設定します。 注: setcookie 関数を呼び出す前にブラウザにデータを出力しないでください。そうしないと、エラーが発生します。
クロスドメイン Cookie を実装するにはどうすればよいですか?
Cookie の仕様によれば、Cookie は 1 つのドメイン名に対してのみ使用できます。したがって、ブラウザで 1 つのドメイン名に対して Cookie が設定されている場合、この Cookie は他のドメイン名には使用できません。
クロスドメイン Cookie の実装計画について話しましょう:
ステップ 1: プリセット スクリプトを作成する
次のコードをプリセット スクリプトに追加します (または、すべてのスクリプトの前に関数に含めます)。
/*GET変数が設定されており、Cookie変数と異なる場合
*GET変数(Cookie更新)を使用します
*/
global $HTTP_COOKIE_VARS , $HTTP_GET_VARS ;
if (isset($sessionid) && isset($HTTP_GET_VARS['sessionid']) && ($HTTP_COOKIE_VARS['sessionid'] != $HTTP_GET_VARS['sessionid'])) {
' , $HTTP_GET_VARS['sessionid'], 0, '/', '');
$HTTP_COOKIE_VARS['sessionid'] = $HTTP_GET_VARS['sessionid'];
}
?>
このコードが実行されると、グローバル変数「sessionid」がスクリプトで使用できるようになります。ユーザーの Cookie に sessionid 値、または GET リクエストを通じて送信された sessionid 値が保存されます。
ステップ 2: すべてのクロスドメイン名参照に変数を使用する
グローバル構成ファイルを作成して、切り替え可能なドメイン名の基本的な参照形式を保存します。たとえば、domain1.com と domain2.com がある場合、次の設定になります:
?php
;
$domains['domain2'] = "http://www.domain2.com /-$sessionid-";
?>
次のコードを書きます:
echo "Click こちら でお問い合わせください。";
?>
上記のコードでは次の出力が生成されます。
をクリックしてください こちら</a>からお問い合わせください。 <🎜> ここではセッションIDがURLに挿入されています。
ステップ 3: Apache を構成する
次に、この URL を書き換えるように Apache を構成しましょう。

http://www.domain2.com/-66543afe6543asdf6asd-/contact/
を次のように変更する必要があります:
http://www.domain2.com/contact/?sessionid= 66543afe6543asdf6asd
そして、この URL:
http://www.domain2.com/-66543afe6543asdf6asd-/contact/?email=yes
これは次のようになります:
http://www.domain2. com/contact/?email=yes&sessionid=66543afe6543asdf6asd
上記の要件を達成するには、次のように 2 つの仮想サーバーをドメイン 1 とドメイン 2 として構成するだけです:
VirtualHost ipaddress>
DocumentRoot /usr/local /www /domain1
サーバー名 www.domain1.com

RewriteRule の RewriteEngine ^/-(.*)-(.*?.*)$ $2&sessionid=$1 [L, R, QSA]
RewriteRule ^/-(.*)-(.*)$ $2?sessionid=$1 [L, R, QSA]
/www/domain2
ServerName www.domain2.com

の RewriteEngine RewriteRule ^/-(.*)-(.*?.*)$ $2&sessionid=$1 [L, R, QSA]
RewriteRule ^/-(.*)-(.*)$ $2?sessionid=$1 [L、R、QSA]
リクエストを書き込みます。

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