11

この問題についてphpマニュアルを読みましたが、これは非常に一般的な問題のようですが、まだ解決策を見つけていません. セッションをデータベースに保存しています。私のコードは次のとおりです。

// session
$_SESSION['userID'] = $user->id;        
header('Location: /subdirectory/index.php');

次に、index.php の先頭でsession_start()、$_SESSION グローバルを var_dumped しましたが、userID はそこにありません。私が言ったように、私はPHPマニュアル(http://php.net/manual/en/function.session-write-close.php)に目を通しましたが、どちらsession_write_closesession_regenerate_id(true)うまくいきませんでした。誰かが解決策を知っていますか?

編集: ファイルの先頭に session_start() があります。ヘッダー リダイレクトの前にセッション グローバルを var_dump すると、そこにユーザー ID が表示されますが、このスクリプトのサブディレクトリにある他のファイルには表示されません。

4

10 に答える 10

14

これは古いトピックであることは知っていますが、解決策を見つけました(私にとって)。ヘッダーの後に exit を配置しました。

$_SESSION['session'] = 'this is a session';
header('location: apage.php');
exit;

これは私のために働く

于 2011-04-01T09:23:07.860 に答える
4

@Matt(まだコメントできません...):場合: a)
リダイレクト前にセッションに表示され
ますb)他のキーが機能 します

問題の 80% は register_globals であり、同じ名前の変数 $userID がどこかで使用されています (残りの 19% は予期しない場所で上書きしているだけで、1% はリダイレクト前にセッションを書き込み/ロックできず、データが古くなっています) 、その場合、リダイレクトの前に session_write_close() を試すことができます)。言うまでもなく、register_globals はオフにする必要があります:P

于 2010-06-04T17:12:19.503 に答える
1

この問題については聞いたことがありませんが、セッションをあまり使用していません。

セッションでは、いくつかのことを行う必要があり、いくつかの設定をセットアップする必要があります。

  • クライアント側で有効になっている Cookie
  • session_start()、何かが起こる前に
  • セッションを破棄しないようにしてください(ログアウトしたい場合を除く)
  • PHP セッション ID は同じでなければなりません (Cookie に関連します)。

別の問題として、$user->id が次のページに存在しないオブジェクトへの参照を返している可能性があります。ほとんどの場合そうではありませんが、確認してください。

私があなたのコードを見たら、私はあなたをもっと助けることができます. ただし、デバッグ時に session_id() でセッション キーをチェックし、同じであることを確認してください。あなたがそれを試すことができるなら、私が助け続けることができると言ってください.

私も、セッションに戻ったときにこれがどうなるか知りたいです。

于 2010-06-06T19:07:52.230 に答える
0

両方のページが同じphpバージョンであることを確認してください(php5、php4のセッションパスが異なる場合があります)

于 2010-06-06T14:41:52.397 に答える
0

session_start(); を取得しましたか? 頂上で?

テストされていませんが、次のようなことはできません:

session_start();
$_SESSION['userID'] = $user->id;
if( $_SESSION['userID'] == $user->id )
{  
    header('Location: /index.php');
}

私はこれまでこの問題を抱えたことがない、興味深い

于 2010-06-03T18:37:19.317 に答える
0

これは地獄のように面倒でしたが、最終的に解決策を見つけました。

config.php 私が持っていた: include 'session.php';

session.php の先頭には、次のものがありました。

session_start() を config.php ファイルの先頭に移動すると、viola...

問題が解決しました!

于 2013-07-07T10:31:16.870 に答える
0

userID にはキーワード ステータスがありません。

私にとって唯一の理由は、 $_SESSION['userID'] がどこかで上書きまたは削除されていることです。

セッションに追加/アクセスするすべてのファイルで session->start() を使用していることを確認してください。

1 つの重要なこと (これはあなたのケースには当てはまらないかもしれません) は、セッションが Cookie を使用して処理されている場合、Cookie は特定のディレクトリとその下のサブディレクトリでのみアクセスできるようにすることができるということです。とにかく、サブディレクトリはセッションにアクセスできます。

于 2010-06-04T11:36:37.167 に答える