ホームページ  >  記事  >  バックエンド開発  >  PHPセッションが失われる原因は何ですか?

PHPセッションが失われる原因は何ですか?

藏色散人
藏色散人オリジナル
2021-03-01 09:23:413414ブラウズ

php セッションが失われる理由は次のとおりです: 1. クライアントで Cookie が無効になっている; 2. ブラウザが Cookie にアクセスできない; 3. コンパイル中に php.ini の「session.use_trans_sid=0」がオンになっていない「 –enable-trans-sid」オプション。

PHPセッションが失われる原因は何ですか?

この記事の動作環境: Windows 7 システム、PHP 8 バージョン、Dell G3 コンピューター。

著者は偶然問題に遭遇しました。お客様は、Web サイトのセッションが常に失われると言いました。その後、長い間検索しましたが、原因が見つかりませんでした。最終的に、サーバーの時間が原因であることがわかりました。ネットワーク時間が一致しないため、問題が発生しました。ユーザーはログインできないか、すぐにログアウトできません。その過程で、他にも理由があるかもしれないことが分かりましたので、それをここで示し、皆さんと共有したいと思います。

一般的に、セッションが失われる理由は次のとおりです:

1. クライアントは Cookie を無効にしています

2. ブラウザーは次のことを行うことができません。 cookie

3、php.ini の session.use_trans_sid=0、またはコンパイル時に –enable-trans-sid オプションがオンになっていない場合、セッションはサーバー側に保存されます (デフォルトでは、セッションは保存されます)。クライアントによって提供されたセッションに応じて、ユーザーのファイルを取得し、変数の値を取得します。セッション ID は、クライアントの Cookie または Http1.1 プロトコルの Query_String を使用してサーバーに送信できます。 (つまり、アクセスした URL の「?」以降の部分) すると、サーバーはセッションの目次を読み取ります……。

つまり、セッションIDはサービス上に保存されているセッション変数を取得するためのIDカードです。 session_start();というコードを実行すると、サーバー上にセッションファイルが生成され、それに一意に対応するセッションIDが生成され、セッション変数は、生成されたセッションファイルに一定の形式で格納されるように定義されています。セッション ID を通じて、定義された変数を取得できます。

ページを通過した後、セッションを使用するには、session_start() を実行する必要があります。別のセッション ファイルが生成され、それに対応して、対応するセッション ID が生成されます。このセッション ID は、次の目的には使用できません。このセッション ID はファイルを開くための「キー」ではないため、最初のセッション ファイルで前述の変数を取得します。 session_start(); の前にコード session_id($session id); を追加すると、新しいセッション ファイルは生成されず、この ID に対応するセッション ファイルが直接読み取られます。デフォルトでは、PHP のセッションはクライアントの Cookie を使用してセッション ID を保存するため、クライアントの Cookie に問題があるとセッションに影響します。

セッションは必ずしも Cookie に依存する必要はないことに注意する必要があります。これが、Cookie と比較したセッションの優れた点でもあります。クライアントの Cookie が無効になっている場合、または問題が発生している場合、PHP は自動的にセッション ID を URL に付加し、セッション ID を介してセッション変数をページ間で使用できるようにします。

ただし、この添付ファイルには特定の条件もあります。つまり、「php.ini の session.use_trans_sid = 1、またはコンパイル中に –enable-trans-sid オプションがオンになっている」ということです。上記の原則を理解した上で、Cookie を脇に置いてセッションを使用しましょう。主な方法は 3 つあります:

1. php.ini で session.use_trans_sid = 1 を設定するか、コンパイル中に –enable-trans- をオンにします。 sid オプションを使用すると、PHP がページ間でセッション ID を自動的に渡すことができます。

2. URL を通じて値を手動で渡し、非表示のフォームを通じてセッション ID を渡します。

3. session_id をファイル、データベースなどに保存し、クロスページ プロセス中に手動で呼び出します。

[推奨学習: 「PHP ビデオ チュートリアル 」]

以上がPHPセッションが失われる原因は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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