ホームページ  >  記事  >  バックエンド開発  >  PHP のクロスページ配信が失敗した場合はどうすればよいですか?

PHP のクロスページ配信が失敗した場合はどうすればよいですか?

醉折花枝作酒筹
醉折花枝作酒筹転載
2021-06-22 16:44:061890ブラウズ

この記事では、PHP のクロスページ配信が失敗する問題の解決方法を紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

PHP のクロスページ配信が失敗した場合はどうすればよいですか?

この記事では、PHP SESSION のクロスページ配信が失敗する問題の解決方法を中心に、サンプルコードを交えて詳しく紹介していますので、皆様の学習や学習の参考になると思います。

今日は前回のセッションの掘り下げとも言えるユーザーログイン判定を実現するセッションを使って、その情報と動作の仕組みを確認してみました。セッションは次のとおりです:

session これはサーバー側のセッション メカニズムです。クライアントがサーバーにセッションの作成を要求すると、サーバーはまずその要求に一意のセッション ID が含まれているかどうかを検出します。 、これは、サーバーがユーザーのセッションをすでに作成していることを意味します。セッション ID に従って検索するだけです。ユーザーのセッションはユーザーが使用できます。セッション ID がない場合、サーバーは、ユーザーの一意のセッション ID。

作成が完了すると、セッション ID がサーバーからクライアントに返され、クライアント上でローカルに保存されます。

セッション ID を保存するための一般的なメカニズムは Cookie ですが、Cookie は人為的に禁止される可能性があるため、Cookie が禁止された後も、通常は URL の書き換えによってセッションを継続できるようにする必要があります。 ,

式は www.fckfs.com ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764 です。もう 1 つは URL の末尾に追加されるクエリ文字列としてです。式は http://.... /xxx? jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcE bzWoWiBYEnLerjQ99zWpBng!- 145788764 ユーザーにとってこれら 2 つのメソッドに違いはありませんが、サーバーが解析中にそれらを処理する方法が異なります。最初のメソッドを使用すると、セッション ID 情報を通常のプログラム パラメーターと区別するのにも役立ちます。

対話プロセス全体を通じて状態を維持するには、クライアントが要求する可能性のある各パスの最後にこのセッション ID を含める必要があります。

セッション無効化に関するもう 1 つの誤解:

セッションの仕組みについて話しているとき、「ブラウザを閉じればセッションは消えるのではないか」という誤解をよく聞きます。実際、会員カードの例を想像していただければわかると思いますが、お客様が積極的にお店にカードの解約を申し出ない限り、お店は簡単にお客様の情報を削除することはありません。

同じことがセッションにも当てはまります。プログラムがサーバーにセッションを削除するように通知しない限り、サーバーはセッションを保持します。通常、プログラムはユーザーがログオフするときにセッションを削除する命令を送信します。

ただし、ブラウザは閉じる前にサーバーに、閉じようとしていることを積極的に通知することはないため、サーバーはブラウザが閉じられたことを知る機会がありません。この錯覚の理由は、ほとんどのセッション メカニズムがセッション Cookie はセッション ID の保存に使用されますが、ブラウザを閉じるとセッション ID が消え、再度サーバーに接続すると元のセッションが見つかりません。

サーバーによって設定された Cookie がハードディスクに保存されている場合、または何らかのメソッドを使用してブラウザーによって送信された HTTP リクエスト ヘッダーを書き換えて元のセッション ID をサーバーに送信した場合でも、ブラウザを再度開いたときの元のセッション ID。

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

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

1. session_start(); は可能な限りページの先頭に配置する必要があります。

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

3. セッションは php のスーパー グローバル変数です。その後に続く $_GET、$ _POST、$_SERVER は同じであるため、使用する場合は大文字にする必要があります:

$_SESSION['username']=$username;

4. クロスページ転送の例: a.php ページは $_SESSION['username'] をに渡しますb.php:

a.php:

session_start();
$username=$_POST['username'];
$_SESSION['username']=$username;
?>

b.php:

session_start();
echo $_SESSION['username'];
?>

推奨学習: php ビデオ チュートリアル

以上がPHP のクロスページ配信が失敗した場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。