ホームページ  >  記事  >  バックエンド開発  >  PHPがセッションを通過できない場合はどうすればよいですか?

PHPがセッションを通過できない場合はどうすればよいですか?

藏色散人
藏色散人オリジナル
2021-10-15 09:17:002031ブラウズ

php がセッションを渡せない問題の解決策: 1. クライアントで cookie を有効にする; 2. ブラウザの問題を確認して cookie にアクセスする; 3. php.ini で session.use_trans_sid を有効にする。

PHPがセッションを通過できない場合はどうすればよいですか?

この記事の動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

PHP で SESSION をページ間で渡せない問題の解決策

PHP で SESSION を使用している友人は、SESSION 変数をページ間で渡せないという問題に遭遇する可能性があります。これには数日間悩みましたが、情報を調べて最終的に問題を考え、解決しました。この問題の原因は次のとおりだと思います:

1. クライアントで Cookie が無効になっている
2. ブラウザに問題があり、一時的に Cookie にアクセスできません
3. php のセッション。 ini.use_trans_sid = 0 またはコンパイル中に --enable-trans-sid オプションがオンになっていませんでした

なぜこのようなことが起こっているのでしょうか?以下に説明します:

セッションはサーバー側に保存されます (セッションはデフォルトでファイルとして保存されます)。クライアントから提供されたセッション ID に従って、ユーザーのファイルが取得され、変数の値が取得されます。セッションIDはクライアントのCookieを利用するか、Http1.1プロトコルのQuery_String(アクセスしたURLの「?」以降の部分)をサーバーに送信し、サーバーがSessionディレクトリを読み込みます。つまり、セッション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 をファイル、データベースなどに保存し、クロスページ プロセス中に手動で呼び出します。

例で説明しましょう:

s1.phps2.php

##cc98bc93d9cc2a9b5f597f4c9c020a1a次のページ5db79b134e9f6b82c0b36e0489ee08ed 」 ;
エコー ​ $url ; ?>


08cf7e2c722a4f532bb11b4a0e6b052e次のページ5db79b134e9f6b82c0b36e0489ee08ed 」 ;
エコー ​ $url ; ?>


s2.php メソッド 3: login.html

#c3590955b232c4f97b91a3a9b962b6a4ログイン5db79b134e9f6b82c0b36e0489ee08edしてください 」 ;
死ぬ ();
}

?>

Cookie テストもオフにしてください。ユーザー名: laogong パスワード: 123 これは、セッション ID をファイルに保存するためのものです。ファイルは: e:/tmp/phpsid.txt です。ファイル名を決定してください。独自のシステムに従ったパスです。

データベース方式については例を挙げませんが、ファイル方式と同様です。

要約すると、上記のメソッドには 1 つの共通点があります。それは、前のページでセッション ID を取得し、それを次のページに渡す方法を見つけることです。コード session_id (それを渡します) を追加します。 ) 次のページの session_start(); コードの前にあります。表示されたセッション ID);

推奨学習: 「

PHP ビデオ チュートリアル

以上がPHPがセッションを通過できない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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