0

ばかげているように聞こえますが、私はこの動作に困惑しています。

私のPHPコードでは、session_start();何よりも先に呼び出しています(呼び出される前のスペースでさえありません)。セッション変数を設定し、その変数をエコーすることでこれをテストできます。

ページの 1 つで次のコードを実行すると、期待されるセッション ID が返されますが、ajax に使用される投稿ページの 1 つで実行すると、空になります。別のページから設定されたセッション変数ではなく、ajax投稿ページで具体的に設定したセッションのみが表示されます。

 $a = session_id();
 var_dump($a);

最初から呼び出されていることを確認するようにという応答が返されることはわかってsession_start();いますが、そうであると断言します (そうでない場合、セッションはそのページでローカルに機能しません)。

この奇妙な動作を引き起こしているのは一体何なのでしょうか?

FWIW、追加ini_set('display_errors', 1); error_reporting(E_ALL);しても、別のページから設定されたセッション変数をダンプしようとしたときに、未定義の変数があることを伝える以外の情報は得られません。

4

3 に答える 3

0

ページ間をどのように移動しますか? を使用している場合header、最初のページを離れる前にセッション データが常に書き込まれるとは限りません。私は使用しなければならなかった

session_write_close(); 
header('Location: page2.php');
于 2013-10-04T04:28:40.170 に答える