ホームページ  >  記事  >  php教程  >  PHP で SESSION が失われた場合の解決策 (ページをまたいで渡すことはできません)

PHP で SESSION が失われた場合の解決策 (ページをまたいで渡すことはできません)

WBOY
WBOYオリジナル
2016-06-21 08:50:561321ブラウズ

一般的に、SESSION が失われる原因としては次のような点があります:
1. クライアントで Cookie が無効になっています
2. ブラウザは Cookie にアクセスできません
3. php.ini またはコンパイル時
の session.use_trans_sid=0 --enable-trans-sid オプションがオンになっていません

セッションはサーバー側に保存され (デフォルトではファイルとして保存されます)、ユーザーのファイルはクライアントから提供されたセッション ID に基づいて取得されます
変数の値を取得します。セッション 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 をファイル、データベースなどに保存し、クロスページ プロセス中に手動で呼び出します。



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