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

COOKIEとSESSIONの関係や違いなど

WBOY
WBOYオリジナル
2016-08-08 09:20:46814ブラウズ

1. Cookie の概要

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

1. Cookieの設定

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

SetCookie 関数は Cookie を定義し、それを HTTP ヘッダーの末尾に追加します。 SetCookie 関数のプロトタイプは次のとおりです:
int SetCookie(string name, string value, int期限切れ, string path, string Domain, int secure );

パラメータの説明: Cookie 名、Cookie 値、有効期限 (int)、有効なパス、限定されたドメイン名、https 配信のみが有効です

注: 現在設定されている Cookie は、これは、Cookie が設定されたページでサーバーからクライアントのブラウザに渡され、ブラウザがクライアントのマシンから Cookie を取り出して送信できるためです。次のページでサーバーに戻ります。 usageの例:

normal使用:

setcookie( 'name'、 'php huaibei'); ',time()+24*60*60);//1day

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


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

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

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

3、Cookie を削除します

既存の Cookie を削除するには、2 つの方法があります:

1 つは、name パラメーターのみを使用して SetCookie を呼び出し、それに次の名前を付ける方法です。の名前が​​関連するユーザーのコンピューターから削除されます。例: setcookie('name','');

もう 1 つの方法は、Cookie の有効期限を time() または time()-1 に設定してから、この Cookie を設定することです。このページは閲覧後、削除されました(実際には無効になりました)。 例: setcookie('name','PHP Huaibei',time()-24*60*60);

Cookie が削除されても、その値は現在のページで引き続き有効であることに注意してください。

Cookie使用上の注意:

まず、HTMLファイルの内容を出力する前に設定する必要があります(CookieはHTTPプロトコルヘッダーの一部であり、ブラウザとサーバー間で情報を転送するために使用されます)したがって、これらは HTML ファイル内で使用する必要があります。ファイル自体の内容が出力される前に Cookie 関数が呼び出されます。
ob_end_flush(); // キャッシュを更新すると、ヘッダー プロンプト エラーを防ぐことができます);

Cookie の制限は、ブラウザごとに異なります。ブラウザで作成できる Cookie の最大数は 30 で、各 Cookie は 4KB を超えることはできません。各 Web サイトで設定できる Cookie の総数は 20 を超えることはできません。

現在設定されているCookieはすぐには有効になりませんが、次のページまで表示されます


2. セッションの紹介

セッション メカニズムはサーバー側のメカニズムであり、サーバーはハッシュ テーブル (またはハッシュ テーブル) に似た構造を使用して、各 Web サイト訪問者に一意の識別子、つまりセッション ID を割り当てます。これは 2 つの方法で保存できます。URL 経由で渡す方法と、クライアントの Cookie に保存する方法です。もちろん、セッションをデータベースに保存することもできます。これはより安全ですが、効率は低下します。 PHP のセッション メカニズムは、Cookie を設定し、その Cookie にセッション ID を保存することで、サーバー側でセッション ファイルが生成され、Web アプリケーションに関連するデータが保存されます。これらのセッションはページ間で転送されます。

PHP 関連関数

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

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

session_register(): セッション変数を登録します

session_unregister(): セッション変数を (1 つずつ) 削除します

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

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

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

1関数 session_start() プログラムの先頭で実行する必要があり、その前に出力コンテンツを置くことはできません。「警告: セッション Cookie を送信できません - ヘッダーは既に送信されました。」 " が表示されます。

2. 関数 session_register() は、セッションに保存される関連変数を登録するために使用されます。その使用法は次のとおりです:

$val = " session value";

session_register("val ");

?>

val は登録するセッション変数の名前です。登録時に「$」記号を追加しないでください。変数名を書き込みます。

3. 関数 session_unregister() の使い方は上記の関数と全く同じですが、上記の関数は

session 変数を登録します。

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

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

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

1, session.save_handler = file

はセッションデータの読み取り/書き込みに使用され、デフォルトはファイルです。これにより、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 シリアル化形式です

右側: 最初の行is echo Serialize($_SESSION['name']);//シリアル化

2 行目はセッション値を出力するものです

************************* ここで、ファイル名は session-name で、内容はは PHP シリアル化形式です

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

以上、COOKIEとSESSIONの関係と違いを、関連する内容も含めて紹介しましたので、PHPチュートリアルに興味のある方の参考になれば幸いです。

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