ホームページ バックエンド開発 PHPチュートリアル Cookie とセッションの違いと関係_PHP チュートリアル

Cookie とセッションの違いと関係_PHP チュートリアル

Jul 13, 2016 am 10:55 AM
cookie session そして について 関係 共有 違い そして 詳しい 説明する

クッキーとセッションの違いについて詳しく説明した記事を共有して、困っている友達が参考にしてください。 Cookieはユーザーを識別するためによく使用されます。 Cookie は、サーバーがユーザーのコンピュータ上に残す小さなファイルです。同じコンピュータがブラウザを通じてページをリクエストするたびに、Cookie も送信されます。 PHP を使用すると、Cookie 値を作成および取得できます。 PHP は SetCookie 関数を使用して Cookie を設定します。 SetCookie 関数は Cookie を定義し、それを HTTP ヘッダーの末尾に追加します。 SetCookie 関数のプロトタイプは次のとおりです。 int SetCookie(文字列名、文字列値、int 期限切れ、文字列パス、文字列ドメイン、int セキュア);
パラメータの説明: Cookie名、Cookie値、有効期限(int)、有効なパス、制限されたドメイン名、https配信のみが有効です

コードは次のとおりですコードをコピー使用例: 通常の使用: setcookie('name','PHP淮北');有効期限あり:
setcookie('name','PHP淮北',time()+24*60*60);//1日
Cookie はパス指向であり、パスが設定されていない場合、デフォルトでは、図に示すように、別のファイルの下の Cookie が別のフォルダに保存されます。デフォルトでは、mytest フォルダに保存されます。 phphuaibei/201111/201111151945348209.png">Cookie とセッションの違いと関係_PHP チュートリアル2. Cookie の受信と処理クライアントとサーバー間の Web 通信プロトコルは http です。 PHP が http 経由でユーザー データを取得するために一般的に使用される 3 つのメソッドは、POST メソッド、GET メソッド、および Cookie です。 PHP のデフォルトの配信方法は Cookie であり、これも最適な方法です。 たとえば、MyCookier という名前の Cookie を設定すると、PHP は WEB サーバーが受信した HTTP ヘッダーからそれを自動的に分析し、$myCookie という名前の通常の変数と同様の変数を形成します。この変数の値が Cookie の値になります。 3. Cookie を削除します 既存の Cookie を削除するには、2 つの方法があります:
  1. まず、name パラメーターのみを指定して SetCookie を呼び出します。その後、この名前の Cookie が関連コンピューターから削除されます。例: setcookie('name',''); もう 1 つの方法は、Cookie の有効期限を time() または time()-1 に設定することです。そうすれば、ページが閲覧された後に Cookie が削除されます (実際には期限切れになります)。 例: setcookie('name','PHP Huaibei',time()-24*60*60);Cookie が削除されても、その値は現在のページで引き続き有効であることに注意してください。
Cookie使用上の注意:
    1. まず、HTML ファイルのコンテンツが出力される前に設定する必要があります (Cookie は HTTP プロトコル ヘッダーの一部であり、ブラウザとサーバーの間で情報を転送するために使用されるため、Cookie 関数は、HTML ファイルのコンテンツを出力する前に呼び出す必要があります) HTML ファイル自体に属するコンテンツが出力されます。
    まずPHPページで使用できます
ob_start();//スタートコード…..ob_end_flush(); //キャッシュを更新しますヘッダー プロンプト エラーを防ぐことができます);
    ブラウザごとに Cookie の処理方法が異なります
  1. Cookieの制限はクライアント側にあります。ブラウザで作成できる Cookie の最大数は 30 で、各 Cookie は 4KB を超えることはできません。各 Web サイトで設定できる Cookie の総数は 20 を超えることはできません。
  2. 現在設定されている Cookie はすぐには有効になりませんが、次のページまで表示されません
セッションの紹介 セッション メカニズムはサーバー側のメカニズムであり、サーバーはハッシュ テーブル (またはハッシュ テーブル) に似た構造を使用して、各 Web サイト訪問者に一意の識別子、つまりセッション ID を割り当てることができます。もちろん、セッションをデータベースに保存することもできます。これはより安全ですが、URL を使用する方が安全です。 pass PHP のセッションメカニズムは、Cookie を設定し、セッション ID (Session ID) をサーバー側で生成し、ユーザーに関連付けます。これらのセッションとページ間の転送に関連しています。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() 関数は主に、システムがログアウトして終了するときにすべてのセッション変数を破棄するために使用され、パラメーターを持たず、直接呼び出すことができます。 Sessionと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() を通じてセッションを明示的に初期化することをお勧めします。 Cookie とセッションの違いと関係_PHP チュートリアル 上の写真: 左側は xammp/tmp/ に保存されたセッション ファイルで、内容は PHP シリアル化形式です 右側: 最初の行は echoserialize($_SESSION['name']);//シリアル化 2行目はセッション値を出力します *******************ファイル名はセッション名で、内容はPHPシリアル化形式です Cookieとセッションの違いと関係
  • 保管場所:
    1. セッションはサーバーの場所に保存され、セッション関連の設定はphp.iniを通じて設定できます
    2. Cookie はクライアントに保存されます (実際には 2 つのタイプに分類できます:
1. 永続的な Cookie、Cookie が設定された時刻は、ファイルの形式でハードディスクに保存されます。 2. セッション Cookie の場合、Cookie のライフサイクルはブラウザを閉じる前に消去されます。通常、Cookie はハードディスクには保存されません。 Cookieとセッションの関係 Cookie とセッションの違いと関係_PHP チュートリアル上の写真からわかるように: Cookieはhttpヘッダーを介して送信されます: クッキー <font face="Arial">name=PHP%BB%B4%B1%B1 PHPSESSID=cpt2ah3pi4cu7lo69nfbfllbo7</font> <font face="Arial" size="2">PHPSESSID はサーバー セッションに関連付けられた重要なパラメータです<code><font face="Arial">name=PHP%BB%B4%B1%B1; PHPSESSID=cpt2ah3pi4cu7lo69nfbfllbo7</font> <font face="Arial" size="2">セッション ファイルをもう一度見てください: sess_cpt2ah3pi4cu7lo69nfbfllbo7</font> <font face="Arial" size="2">session_id の生成形式は、sess_ に PHPSESSID 値の文字列を加えたものです<code><font face="Arial" size="2">其中PHPSESSID就是关联服务器session的重要参数</font> <font face="Arial" size="2">次のように理解できます: <code><font face="Arial" size="2">再看session文件:sess_cpt2ah3pi4cu7lo69nfbfllbo7</font> <font face="Arial" size="2">session_id的生成格式就是:sess_加上一串PHPSESSID的值</font> プログラムがクライアントのリクエストに対してセッションを作成する必要がある場合、サーバーはまずクライアントのリクエストにセッション識別子 (セッション ID と呼ばれます) が含まれているかどうかを確認します。含まれている場合は、そのセッションが以前にこのクライアントに対して作成されたことを意味します。 、サーバーはセッション ID に従ってこのセッションを取得します (取得できない場合は、新しいセッションが作成されます)。クライアントのリクエストにセッション ID が含まれていない場合は、クライアントのセッションが作成され、セッションが関連付けられます。このセッション ID が生成される場合、セッション ID の値は、繰り返されず、模倣するパターンが見つけにくい文字列である必要があります。このセッション ID は、保存のためにこの応答でクライアントに返されます。このセッション ID を保存する方法には Cookie を使用できるため、対話プロセス中にブラウザーはルールに従ってこの ID をサーバーに自動的に送信できます。通常、この Cookie の名前は SEEESIONID に似ています<font face="Arial" size="2">我们可以这样理解:</font> php.iniのセッションとCookieに関する設定 1,session.use_cookie = 1 Cookie メソッドを使用してセッション ID 値を渡すかどうか。デフォルトは 1 で、これは有効を意味します。 2,session.name = PHPSESSID
Cookie が sessioin_id を渡すか、GET メソッドが session_id を渡すかに関係なく、キー値を使用する必要があります。形式は Cookie: sess_name=session_id; および /path.php?sess_name=session_id で、ここで sess_name を指定します。
3,session.use_only_cookies = 0
Cookie メソッドを使用してセッション ID のみが渡されることを示します。 Cookie を渡すには Cookie に加えて GET メソッドもあると述べましたが、GET メソッドは安全ではありません。ユーザー側で Cookie が無効になっている場合、GET メソッドを使用して session_id を渡します。この設定を使用すると、GET メソッドを使用して session_id を渡すことができます。
4. session.cookie_lifetime = 0、session.cookie_path = /、および session.cookie_domain =
Cookie メソッドを使用して session_id を渡す場合、Cookie の有効なドメイン、ディレクトリ、および時刻がここで指定されます。 setcookie() 関数の仮パラメータ $expire、$path、$domain にそれぞれ対応します。このうち、cookie_lifetime=0 はブラウザを閉じるまで Cookie が削除されないことを意味します。これらの値は、session_set_cookie_params() 関数を使用して変更することもできます。
5,セッション名([文字列 $name])
session_name を取得または更新します。 name が渡された場合、デフォルト名 PHPSESSID (session.name で指定) が使用されないことを意味します。それ以外の場合は、現在の session_name が取得されます。注: session_name が設定されている場合、有効にするために session_start() の前に呼び出す必要があります。
6,session_id([文字列 $id])
session_name() と似ていますが、session_id を読み取ったり設定したりするメソッドです。同様に、session_id が設定されている場合、有効にするには session_start() の前に呼び出す必要があります。
7. session_set_cookie_params() と session_get_cookie_params()
session.cookie_lifetime、session.cookie_path、session.cookie_domain の 3 つの php.ini 設定は、session_set_cookie_params() を通じてリセットできます。 Session_get_cookie_params() はこれらの設定の値を取得します。
概要:
  1. サーバー側のセッションはクライアント側の Cookie よりも安全です
  2. サーバーがクラスタ化されている場合、セッションは簡単に同期できなくなりますが、Cookie は同期しなくなります
追記: 今日の午後ログアウトするために Cookie を使用すると問題が発生します ログアウト時に使用: setcookie('ユーザー名','',time()-3600); setcookie('name','',time()-3600); 理論的には、Cookie は正常にクリアされるはずです。テスト中に、最初のログインと終了はまったく正常であることがわかりましたが、再度ログインするとログアウトできなくなり、firebug を使用してしまいました。元のページキャッシュが設定されていることを確認し、ページキャッシュの設定にnginxを使用していることを確認しました

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

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

tru​​ehttp://www.bkjia.com/PHPjc/632253.html技術記事 Cookie とセッションの違いについて詳しく説明した記事を共有して、困っている友人が参考にしてください。 Cookie はユーザーを識別するためによく使用されます。クッキーはサーバーです...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PSのエクスポートPDFのパスワード保護を設定する方法 PSのエクスポートPDFのパスワード保護を設定する方法 Apr 06, 2025 pm 04:45 PM

Photoshopでパスワードで保護されたPDFをエクスポート:画像ファイルを開きます。 [ファイル]&gtをクリックします。 「エクスポート」&gt; 「PDFとしてのエクスポート」。 「セキュリティ」オプションを設定し、同じパスワードを2回入力します。 [エクスポート]をクリックして、PDFファイルを生成します。

CentosとUbuntuの違い CentosとUbuntuの違い Apr 14, 2025 pm 09:09 PM

Centosとubuntuの重要な違いは次のとおりです。起源(CentosはRed Hat、for Enterprises、UbuntuはDebianに由来します。個人用のDebianに由来します)、パッケージ管理(CentosはYumを使用し、安定性に焦点を当てます。チュートリアルとドキュメント)、使用(Centosはサーバーに偏っています。Ubuntuはサーバーやデスクトップに適しています)、その他の違いにはインストールのシンプルさが含まれます(Centos is Thin)

H5とミニプログラムとアプリの違い H5とミニプログラムとアプリの違い Apr 06, 2025 am 10:42 AM

H5。ミニプログラムとアプリの主な違いは次のとおりです。技術アーキテクチャ:H5はWebテクノロジーに基づいており、ミニプログラムとアプリは独立したアプリケーションです。経験と機能:H5は軽量で使いやすく、機能が限られています。ミニプログラムは軽量で、インタラクティブが良好です。アプリは強力で、スムーズな経験があります。互換性:H5はクロスプラットフォーム互換性があり、アプレットとアプリはプラットフォームによって制限されています。開発コスト:H5には、開発コストが低く、中程度のミニプログラム、最高のアプリがあります。適用可能なシナリオ:H5は情報表示に適しており、アプレットは軽量アプリケーションに適しており、アプリは複雑な機能に適しています。

Routerフォルダーの下のindex.jsファイルでvue.use(vuerouter)を呼び出す必要があるのはなぜですか? Routerフォルダーの下のindex.jsファイルでvue.use(vuerouter)を呼び出す必要があるのはなぜですか? Apr 05, 2025 pm 01:03 PM

Vueアプリケーションを開発するときに、ルーターフォルダーの下にindex.jsファイルにvuerouterを登録する必要性があるため、ルーティング構成で問題が発生することがよくあります。特別...

XPathを使用して、JavaScriptの指定されたDOMノードから検索する方法は? XPathを使用して、JavaScriptの指定されたDOMノードから検索する方法は? Apr 04, 2025 pm 11:15 PM

JavaScriptのDOMノードの下でのXpath検索方法の詳細な説明、XPath式に基づいてDOMツリーから特定のノードを見つける必要があることがよくあります。あなたがする必要があるなら...

さまざまなデータベースシステムに列を追加するための構文の違いは何ですか さまざまなデータベースシステムに列を追加するための構文の違いは何ですか Apr 09, 2025 pm 02:15 PM

and:mysql:Alter table_name add column_name data_type; postgresql:column column_name data_typeを変更するcolumn column_name datape; oracle:alter table_name add(column_name data_type);

LaravelとThinkPhpの違い LaravelとThinkPhpの違い Apr 18, 2025 pm 01:09 PM

LaravelとThinkPhpはどちらも人気のあるPHPフレームワークであり、開発における独自の利点と短所を持っています。この記事では、2つの深さを比較し、アーキテクチャ、機能、パフォーマンスの違いを強調して、開発者が特定のプロジェクトのニーズに基づいて情報に基づいた選択を行うのに役立ちます。

Centosでファイアウォールステータスを表示する方法 Centosでファイアウォールステータスを表示する方法 Apr 14, 2025 pm 08:18 PM

Centosファイアウォールの状態は、sudo firewall-cmd--stateコマンドを通じて表示され、ランニングまたはランニングに戻ります。詳細については、構成された領域、サービス、ポートなどを含むSudo Firewall-CMD - List-Allを使用して表示できます。FireWall-CMDが問題を解決しない場合は、sudo iptables -l -nを使用してiptablesルールを表示できます。ファイアウォール構成を変更する前に、サーバーのセキュリティを確保する前に、必ずバックアップを作成してください。

See all articles