ホームページ >バックエンド開発 >PHPチュートリアル >COOKIEとSESSIONの関係や違いなど

COOKIEとSESSIONの関係や違いなど

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-13 12:23:03859ブラウズ

COOKIE と SESSION の関係や違いなど

1. Cookie の概要

Cookie はユーザーを識別するためによく使用されます。 。 Cookie は、サーバーがユーザーのコンピュータ上に残す小さなファイルです。同じコンピュータがブラウザを通じてページをリクエストするたびに、Cookie も送信されます。 PHP を使用すると、Cookie 値を作成および取得できます。

1. Cookie の設定

PHP は SetCookie 関数を使用して Cookie を設定します。

SetCookie 関数は Cookie を定義し、それを HTTP ヘッダーの末尾に追加します。 SetCookie 関数のプロトタイプは次のとおりです。
int SetCookie (文字列名、文字列値、int 期限切れ、文字列パス、文字列ドメイン、int セキュア);

パラメータの説明: Cookie 名、Cookie 値、有効期限 (int)、有効なパス、限定ドメイン名、https

を渡した場合にのみ有効です。 注: 現在設定されている Cookie はすぐには有効になりませんが、次のページまで表示されないためです。このページでサーバーによって設定された Cookie がクライアントのブラウザーに渡されると、ブラウザーはクライアントのマシンから Cookie を取り出して、次のページでサーバーに送り返すことができます。

使用例:

通常の使用:

setcookie('name','PHP淮北');

有効期限付き:
setcookie('name','PHP Huaibei',time() 24*60*60) ; //1day

Cookie はパス指向であり、デフォルトでは現在のファイルの下に保存されます。パスが設定されていない場合、デフォルトでは、別のファイルにある Cookie は別のフォルダに保存されます。図に示すように: デフォルトでは mytest フォルダーに保存されます

sss

2. Cookie を受信して​​処理します

クライアントとサーバー間の Web 通信プロトコルは http です。 PHP が http 経由でユーザー データを取得するために一般的に使用される 3 つのメソッドは、POST メソッド、GET メソッド、および Cookie です。 PHP のデフォルトの配信方法は Cookie であり、これも最適な方法です。

たとえば、MyCookier という名前の Cookie を設定すると、PHP は WEB サーバーが受信した HTTP ヘッダーからそれを自動的に分析し、この変数の値である $ myCookie という名前の変数を形成します。 Cookie

3 の値です。Cookie

既存の Cookie を削除するには

まず、name パラメーターのみを指定して SetCookie を呼び出します。その後、この名前の Cookie が関連するコンピューターから削除されます。例: setcookie(' name','');
もう 1 つの方法は、Cookie の有効期限を time() または time()-1 に設定することです。そうすれば、この Cookie は閲覧後にこのページに表示されます。削除されました(実際には無効になりました)。 例: setcookie('name','PHP Huaibei',time()-24*60*60);
Cookie が削除されると、その値はcurrent ページはまだ有効です。
Cookie 使用上の注意:

まず、HTML ファイルの内容を出力する前に設定する必要があります (Cookie は HTTP の一部です)情報はサーバーとサーバーの間で受け渡されるため、HTML ファイル自体に属するコンテンツが出力される前に Cookie 関数を呼び出す必要があります。
を使用できます。 >

ob_start();//

コードを開きます…..

ob_end_flush(); //キャッシュを更新します

はヘッダー プロンプト エラーを防ぐことができます);

ブラウザーごとに Cookie の処理メカニズムが異なります
Cookie の制限はクライアント側で行われます。ブラウザで作成できる Cookie の最大数は 30 で、各 Cookie は 4KB を超えることはできません。各 Web サイトで設定できる Cookie の総数は 20 を超えることはできません。
現在設定されている Cookie はすぐには有効になりませんが、次のページまで表示されません

2. セッションの紹介

セッション メカニズムはサーバー側のメカニズムであり、サーバーは情報を保存するためにハッシュ テーブルに似た構造を使用します (またはハッシュ テーブルを使用する場合もあります)。各 Web サイト訪問者には一意の識別子、つまりセッション ID が割り当てられます。セッション ID は 2 つの方法で保存できます。URL 経由で渡す方法と、クライアント上の Cookie に保存する方法です。もちろん、セッションを保存することもできます。データベースに保存すると安全になりますが、URL 配信のセキュリティは明らかに劣ります。Cookie を設定し、セッション ID (Session ID) をその Cookie に保存します。ユーザーに関連付けられたサーバー側のファイル。Web アプリケーションはこれらのセッションに関連するデータを保存し、ページ間でデータを転送します。

PHP 関連関数

PHP にはセッションに関連する関数が多数ありますが、最も一般的に使用される関数は次のとおりです:

session_start(): セッションメカニズムを有効にし、セッションを使用する必要があるプログラムファイルの先頭で呼び出します。

session_register():セッション変数の登録

session_unregister(): セッション変数の削除(1つずつ)

session_is_registered(): セッション変数が登録されているかどうかを判断します

session_distroy(): すべてのセッション変数を破棄します (ファイルを含むすべてのセッション変数が破棄されます)

次の点に注意する必要があります。

1. 関数 session_start( ) はプログラムの先頭で実行する必要があります。その前に出力コンテンツを置くことはできません。そうでない場合、

が表示されます。「警告: セッション Cookie を送信できません」 - ヘッダーはすでにこのような警告メッセージを

送信しました。

2. session_register() 関数は、セッションに保存する情報を登録するために使用されます。 関連する変数は次のように使用されます。

$val = "セッション値";

session_register("val");

?> ;

val は登録するセッション変数の名前です。追加しないでください。登録するときは、「$」記号を使用して変数名を記述します。

3. 関数 session_unregister() は上記の関数とまったく同じですが、上記の関数は、

セッション変数を登録するもので、指定されたセッション変数

を削除します。

4. 関数 session_is_registered() は、セッション変数が登録されているかどうかを判断するために使用されます。

5. 関数 session_destroy()。これは主に、システムがログアウトして終了するときにすべてのセッション変数を破棄するために使用されます。パラメーターはなく、直接呼び出すことができます。

セッションと PHP.ini の関係の設定

1,session。 save_handler = ファイル

セッション データの読み取り/書き込みに使用される方法。デフォルトはファイルです。これにより、PHP のセッション管理関数は、指定されたテキスト ファイルを使用してセッション データを保存します

2, session.save_path = "/xammp/temp/"

セッションファイルを保存するディレクトリを指定します 別のディレクトリを指定することもできます。ディレクトリを指定します。 httpd デーモン (Apache や www など) の所有者からの書き込み権限が必要です。そうでないと、セッション データを復元できません。 session.save_path = "N;/path" (N は整数) のように記述することもできます。これは、すべてのセッション ファイルが同じディレクトリに保存されるわけではなく、異なるディレクトリに分散されていることを意味します。これは、サーバーが大量のセッション ファイルを処理する場合に役立ちます。 (注: ディレクトリは手動で作成する必要があります)

3, session.auto_start = 0

このオプションが有効な場合、ユーザーリクエストごとにセッションが初期化されます。推奨されません。session_start() を通じて明示的にセッションを初期化することをお勧めします。

QQ スクリーンショット 20111115173320

上の図: 左側は xammp/tmp/ に保存されたセッション ファイル、内容は PHP シリアル化形式です

右サイド: 最初の行は echoserialize($_SESSION['name']);//シリアル化

2 行目はセッション値を出力します

********************** ファイル名はセッション名、内容はPHP シリアル化形式

出典: http://www.cnblogs.com/phphuaibei/archive/2011/11/15/2250082.html

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