ホームページ  >  記事  >  バックエンド開発  >  PHPセッションがページ間で失われた場合の対処方法

PHPセッションがページ間で失われた場合の対処方法

藏色散人
藏色散人オリジナル
2020-09-29 09:14:591859ブラウズ

ページ間での PHP セッション損失の解決策: まず、ページの上部に「session_start();」を配置し、次にセッションの自動開始を構成するか、手動でセッションを開始します。

PHPセッションがページ間で失われた場合の対処方法

推奨: 「PHP ビデオ チュートリアル

セッションを使用して、これを今日実現します ユーザーのログインを判断することは、前のセッションの探索とみなすことができます 情報を確認した後、セッションの動作メカニズムは次のようになります:

セッションはセッションのメカニズムですサーバー側。クライアントがサーバーにセッションの作成をリクエストすると、サーバーはまずリクエストに一意のセッション ID が含まれているかどうかを検出します。含まれている場合は、サーバーがユーザーのセッションを作成したことを意味します。ユーザーのセッションは、ユーザーが使用するセッション ID に従って取得されます。セッション ID がない場合、サーバーはこのユーザーの一意のセッション ID を使用して新しいセッションを作成します。作成が完了すると、セッション ID がサーバーからクライアントに返され、クライアント上でローカルに保存されます。

通常、セッション ID を保存するメカニズムは Cookie ですが、Cookie は人為的に無効にできるため、Cookie を無効にしてもセッションが引き続き実行できることを確認する必要があります。セッション (通常は URL 経由) 書き換えは http://..../xxx;jsessionid= ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764 の形式で実行されます。もう 1 つは、URL の末尾に追加されるクエリ文字列として実行されます。 http://.... ./x​​xx?jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764 ユーザーにとってこれら 2 つのメソッドに違いはありませんが、サーバーは解析中にそれらを異なる方法で処理します。最初のメソッドを使用すると、セッションID情報と通常のプログラムパラメータは区別されます。
対話プロセス全体を通じて状態を維持するには、クライアントが要求する可能性のある各パスの最後にこのセッション ID を含める必要があります。

セッションの失敗に関するもう 1 つの誤解:

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


ブラウザを閉じてもセッションは削除されず、サーバーはセッションの有効期限を強制的に設定するため、 クライアントが最後にセッションを使用してからの時間がこの有効期限を超えると、サーバーはクライアントがアクティブでなくなったとみなし、ストレージ領域を節約するためにセッションを削除できます。

さて、くだらない話をたくさんして、セッション損失の解決策について話しましょう:

1. session_start(); は、

#2.セッションの自動開始が php.ini で設定されていない場合は、各セッションの前に手動でセッションを開く必要があります: session_start();

3. Session は $_GET、$_POST、$_SERVER と同じ PHP のスーパー グローバル変数であるため、使用する場合は大文字にする必要があります: $_SESSION['username']=$username;

4. クロスページ転送の例: a.php ページが $_SESSION['username'] を b.php:

a.php:# に転送します。 ##
<?php
session_start();$username=$_POST[&#39;username&#39;];$_SESSION[&#39;username&#39;]=$username;
?>

b.php

880e0a19df1d92babf7ec23ac9d82cda

以上がPHPセッションがページ間で失われた場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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