検索
ホームページphp教程php手册PHP における Cookie のガイド

クッキー|クッキー

概要

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> データベース ユーザーを作成します。
クエリ OK、1 行が影響を受けます (0.06 秒)
mysql> use users ;
 データベースが変更されました
mysql> テーブル情報を作成します (FirstName varchar(20)、LastName varchar(40)、count varchar(3)); OK、影響を受ける行は 0 です (0.05 秒)



次に、データベースに対して Cookie をチェックするための PHP ページを構築します。

PHP は識別可能な Cookie を対応する変数に変換できるため、「myCookies」という名前の変数を確認できます。 ……
} else { //Cookieが存在しない場合
……
}
?>

When 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 */



名: < input type="text" name="FirstName">
姓:
<input type="submit" value="登録">
  </form>

 register.php 登録ページでユーザーが入力した情報は、regOK.php に送信されます:

/* regOK.php */
if ($FirstName および $ LastName と $email) {
…//ユーザーがデータベースに存在するかどうかをクエリします
}
}else{
…//エラー処理
}




上記のプログラムの流れは次のとおりです:

最初に必要な情報がすべて入力されているかどうかを確認します。入力されていない場合は、戻って再入力します

すべての情報が入力されている場合は、まずユーザーを取得します。データベースからのログイン詳細

mysql_connect() または die ("データベースへの接続エラー!");
$query="select * from info where FirstName='$FirstName' and LastName=' $LastName' および email='$email'";
 $result = mysql_db_query("users", $query);
$info=mysql_fetch_array($result);
$count=$info["count"];

そのようなユーザーが存在するかどうかを確認し、存在する場合は古い情報を指定し、現在の情報で新しい Cookie を作成します。同じユーザーのデータベース ログインにそのようなユーザーは存在しないため、新しいデータベース ログインを作成し、新しい Cookie を作成します。

次に isset() 関数を使用して、ユーザーがカウンターを持っているかどうかを確認し、持っている場合はカウンターが増分され、新しい Cookie が作成されます。
$CookieString=$ FirstName.'&'.$LastName.'&'.$email.'&'.$count;
SetCookie ("myCookies",$CookieString, time()+ 3600);

A ユーザー カウンターでない場合は、mysql にレコードを追加し、Cookie を設定します

注: setcookie 関数を呼び出す前にブラウザにデータを出力しないでください。そうしないと、エラーが発生します。

クロスドメインCookieを実装するにはどうすればよいですか?

Cookieの仕様によれば、Cookieは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'])) {
SetCookie('sessionid', $HTTP_GET_VARS['sessionid'], 0 , ' /', '');
$HTTP_COOKIE_VARS['sessionid'] = $HTTP_GET_VARS['sessionid'];
$HTTP_GET_VARS['sessionid']; このコードを実行すると、スクリプトで利用できるようになります。ユーザーの Cookie に sessionid 値、または GET リクエストを通じて送信された sessionid 値が保存されます。

ステップ 2: すべてのクロスドメイン名参照に変数を使用する

切り替え可能なドメイン名の基本的な参照形式を保存するグローバル構成ファイルを作成します。たとえば、domain1.com と domain2.com がある場合、次の設定になります。

$domains['domain1'] = "http://www.domain1.com/-$sessionid-"; $ Domains['domain2'] = "http://www.domain2.com/-$sessionid-";


次のコードを書きます:

echo "Click こちら</a>でお問い合わせください。";
?>

上記のコードは次の出力を生成します:

Click
こちら</a>にお問い合わせください

ここでは URL に sessionid が挿入されています。

ステップ 3: Apache を構成する

次に、この URL を書き換えるように Apache を構成しましょう。 http://www.ndsain2.com/-66543afe6543asdf6asd-
をこれに変える必要があります:
http://www.duin2.com/Contact/?Sessionid=6543ASDF6ASD そしてこの URL:
http:// www.domain2.com/-66543afe6543asdf6asd-/contact/?email=yes
次のようになります:
http://www.domain2.com/contact/?email=yes&sessionid=66543afe6543asdf6asd

上記を実現するには To要件を満たしている場合は、次のように 2 つの仮想サーバーをドメイン 1 とドメイン 2 として構成するだけです。


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


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書き換え要件が実装されます。








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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール