================================================= ============
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 はそれを開くための「キー」ではないため、変数は入力されます。 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 がオンになっているかどうかを確認するメッセージが頻繁に表示されることを知っています。これは、ほとんどのフォーラムが Cookie に基づいており、フォーラムは Cookie を次の目的で使用するためです。ユーザー名やパスワードなどのユーザー情報を保存しておくと便利です。そして多くの友人は、Cookie は安全ではないと考えており (実際には安全ではありません)、Cookie を無効にすることがよくあります。実際、PHP プログラムでは、クライアントが Cookie をオンにするかどうかに関係なく、Cookie の代わりに SESSION を使用できます。
したがって、Cookie を脇に置いてセッションを使用できます。つまり、ユーザーが Cookie を閉じたと仮定して、セッションを使用します。これを実現するには、いくつかの方法があります。
1. php.ini でセッションを .use_trans_sid = 1 に設定するか、コンパイル時に --enable-trans-sid オプションを有効にして、PHP がページ間でセッション ID を自動的に受け渡せるようにします。
2. URL を通じて値を手動で渡し、非表示のフォームを通じてセッション ID を渡します。
3. session_id をファイル、データベースなどに保存し、クロスページ プロセス中に手動で呼び出します。
パス 1 の例:
s1.php
session_start()
$_SESSION['var1']="中华人民共和国";
$url="次のページ";
echo $url;
?>
s2.php
session_start();
echo "渡されたセッション変数 var1 の値は次のとおりです: ".$_SESSION['var1']; >?>
ここで、クライアント上の Cookie を手動で閉じて再度実行すると、結果が得られない可能性があります。結果が得られない場合は、php.ini で session.use_trans_sid = 1 を設定するか、コンパイル時に --enable-trans-sid オプションをオンにすると、「中華人民共和国」という結果が得られます。 🎜>
パス 2 の例:
s1.php
session_start(); ']="中華人民共和国";
$sn = session_id();
$url="次のページ a>";
echo $url;
?>
s2.php
echo "渡されたセッション変数 var1 の値は次のとおりです。
;フォームを非表示にする方法の基本原理は上記と同じです。
パス 3 の例:
login.html