2

Firefox ではセッション変数は保存され、リダイレクト後に取得できますが、Chrome ではリダイレクト後に存在しないと表示されます。

リダイレクト コード:

session_start();
$_SESSION[ "test" ] = "exists";
session_write_close();
header( "HTTP/1.1 301 Moved Permanently" ); //Removing this 301 line doesn't help
header( "Location: http://" . $_SERVER[ "HTTP_HOST" ] . "/" );
exit();

セッションの取得:

session_start();
if ( isset( $_SESSION[ "test" ] ) )
{
    echo $_SESSION[ "test" ];
    unset( $_SESSION[ "test" ] );
}

これがクロムで機能しないのはなぜですか?

編集:答えを見つけたと思いますが、意味がありません。 行を削除するとunset( $_SESSION[ "test" ] )、リダイレクト後にセッションが保存されます! しかし、なぜこれが起こるのですか?セッションはサーバー側である必要があります。そして、「echo」ステートメントの後に設定を解除します! その後変数を設定解除したからといって、値がエコーされないのはどうしてですか?!

誰が何が起こっているのか知っていますか?

4

4 に答える 4

0

この問題は、Chrome による同じページの複数のリクエストが原因でした。これと同じ方法を行うブラウザは他にないため、この問題は Google Chrome でのみ発生します。

于 2013-04-20T06:34:17.873 に答える
-1

この問題は 2 つの方法で解決できます

私 。Firefox ブラウザの設定で、文字エンコーディングを「UTF-8」に変更します

ii. ページの PHP コードで「header('Content-Type: text/html; charset=utf-8');」を追加します。あなたが投稿するもの

ありがとう、スレシュ・ラマクリシュナン

于 2013-11-27T12:43:35.400 に答える