ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルでの Cookie の使用ガイド

PHP_PHP チュートリアルでの Cookie の使用ガイド

WBOY
WBOYオリジナル
2016-07-21 15:57:00716ブラウズ

まとめ
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 サーバー上のディレクトリを示します。デフォルトは次のとおりです。呼び出されるページの場所 ディレクトリ
DOMAIN: Cookie が使用できるドメイン名、デフォルトは呼び出されるページのドメイン名です。このドメイン名には 2 つの「.」が含まれている必要があるため、トップレベルのドメイン名を指定する場合は、「.mydomain.com」を使用する必要があります。 SECURE: 「1」に設定すると、Cookie が安全であるとみなされるのは次の場合のみであることを意味します。ユーザーのブラウザ サーバーによって記憶されます
Cookie の使用例
ユーザーの ID を自動的に識別し、関連する操作を実行するようなサイトがあるとします。登録ユーザーの場合は、そのユーザーに情報を送信します。すでに登録済みのユーザーの場合は、登録ページへのリンクが表示されます。
上記の要件に従い、まず登録ユーザー情報(姓名、メールアドレス、来店カウンター)を保存するデータベースを作成します。
まず以下の手順に従ってテーブルを作成します:
mysql> create database users;
Query OK, 1 row according to (0.06 sec)
mysql> use users;
データベースが変更されました
l>create table info (FirstName varchar(20) , LastName varchar (40), email varchar(40), count varchar(3));
クエリ OK、影響を受ける行数は 0 (0.05 秒)
次に、データベースに対して Cookie をチェックするための php ページを構築します。
PHP は識別可能な Cookie を対応する変数に変換できるため、「myCookies」という名前の変数を確認できます:
if (isset($myCookies)) { // Cookie がすでに存在する場合
……
} else { //If Cookie は存在しません
……
}
?>
Cookie が存在する場合、次の手順を実行します:
まず 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:
Last Name:


ユーザーが登録簿に記入した情報.php 登録ページが送信されます regOK.php に送信されます:
/* regOK.php */
if ($FirstName and $LastName and $email) {
…//ユーザーが存在するかデータベースにクエリします
}
}else{
…//エラー処理
}

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

DocumentRoot /usr/local/www/domain1
ServerName www.domain1.com
RewriteEngine on
^/-(.* )- (.*?.*)$ $2&sessionid=$1 [L, R, QSA]
RewriteRule ^/-(.*)-(.*)$ $2?sessionid=$1 [L, R, QSA]
/VirtualHost>
<VirtualHostのipaddress>
DocumentRoot /usr/local/www/domain2
ServerName www.domain2.com
RewriteEngine on
RewriteRule ^/-(.*)-(. *?.*)$ $2&sessionid=$1 [L, R, QSA]
RewriteRule ^/-(.*)-(.*)$ $2?sessionid=$1 [L, R, QSA]

これらの書き換えられたルールは、上記の 2 つの URL 書き換え要件を実装します。


http://www.bkjia.com/PHPjc/317947.html

本当http://www.bkjia.com/PHPjc/317947.html技術記事概要 Cookie は、サーバーまたはスクリプトが HTTP プロトコルの下でクライアントのワークステーション上の情報を維持するための方法です。 Cookie は、Web サーバーによってユーザーのブラウザに保存される小さなファイルであり、次のものが含まれる場合があります...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。