ホームページ >バックエンド開発 >PHPチュートリアル >ページ間で PHP セッションを渡すときにセッション値が失われる問題 (画像とテキスト) を解決する

ページ間で PHP セッションを渡すときにセッション値が失われる問題 (画像とテキスト) を解決する

WBOY
WBOYオリジナル
2016-07-25 09:04:201005ブラウズ
ページ間で PHP セッションを渡すときにセッション値が失われる問題を解決する この問題が発生した場合は、それを参照してください。セッションの動作メカニズム:

PHP セッションをページ間で渡すときにセッション値が失われる問題を解決する この問題に遭遇した友人は、それを参照してください。

セッション操作メカニズム: セッションはサーバー側のセッション メカニズムです。クライアントがサーバーにセッションの作成を要求すると、サーバーはまずその要求に一意のセッション ID が含まれているかどうかを確認します。含まれている場合は、サーバーがそのセッションのセッションをすでに作成していることを意味します。セッション ID が作成されている限り、サーバーはユーザーが使用するユーザーのセッションを取得します。セッション ID がない場合、サーバーはユーザーの一意のセッション ID を持つ新しいセッションを作成します。作成が完了すると、セッション ID がサーバーからクライアントに返され、クライアント上でローカルに保存されます。

セッション ID を保存するための一般的なメカニズムは Cookie ですが、Cookie は人為的に無効にできるため、Cookie が無効になった後も、通常は URL の書き換えを通じてセッションを継続できることを確認する必要があります。 http:// ...../xxx;jsessionid= ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764、もう 1 つは http://..../xxx? の形式で URL の後ろに添付されるクエリ文字列としてのものです。 jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6Q ZcEbzWoWiBYEnLerjQ99zWpBng!-145788764this ユーザーにとって 2 つの方法に違いはありませんが、最初の方法を使用すると、解析中にセッション ID 情報を区別するのにも役立ちます。 インタラクション全体を通じて状態を維持するには、クライアントが要求するすべてのパスの最後にこのセッション ID を含める必要があります。

セッションが失われた場合の解決策: 1. session_start(); はできるだけページの先頭に配置する必要があります。 2. php.ini でセッションの自動開始が設定されていない場合は、各セッションの前にセッションを手動で開く必要があります。 3. Session は、$_GET、$_POST、$_SERVER と同じ、PHP のスーパー グローバル変数であるため、使用する場合は大文字にする必要があります。 $_SESSION['username']=$username; 4. クロスページ転送の例: a.php ページが $_SESSION['username'] を b.php:

に転送します。

a.php:

ページ間で PHP セッションを渡すときにセッション値が失われる問題 (画像とテキスト) を解決する

添付ファイル: セッションの無効化に関する誤解: セッションの仕組みについて話していると、「ブラウザを閉じればセッションは消えてしまう」という誤解をよく聞きます。実際、会員カードの例を想像していただければわかると思いますが、お客様が積極的にお店にカードの解約を申し出ない限り、お店は簡単にお客様の情報を削除することはありません。セッションについても同様です。プログラムがサーバーにセッションを削除するように通知しない限り、サーバーは通常、ユーザーがログオフするときにセッションを削除する指示を送信します。ただし、ブラウザは閉じる前にサーバーに閉じようとしていることを積極的に通知することはないため、サーバーはブラウザが閉じられたことを知る機会がありません。これは、ほとんどのセッション メカニズムがセッション ID を保存するためにセッション Cookie を使用するためです。 . ブラウザを閉じるとセッション ID が消え、サーバーに再度接続すると元のセッションが見つかりません。サーバーによって設定された Cookie がハードディスクに保存されている場合、またはブラウザーによって送信された HTTP リクエスト ヘッダーを書き換えて元のセッション ID をサーバーに送信する何らかの方法が使用されている場合、ブラウザーが起動したときに元のセッションを見つけることができます。再び開きました。

ブラウザを閉じてもセッションは削除されないため、サーバーはセッションの有効期限を設定する必要があり、クライアントが最後にセッションを使用してからの時間がこの有効期限を超えた場合、サーバーはクライアントがセッションを終了したとみなすことができます。アクティビティが停止された場合、ストレージ容量を節約するためにセッションが削除されます。



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