2017-01-25 7 views
1

カスタムセッションハンドラを書いていますドキュメントでこれを見つけることができませんが、ソースからreadを読み込んだ後に手動で$ _SESSIONデータを設定するとしますか?

private function setSaveHandler() 
{ 
    $value = session_set_save_handler($this->handler); 
    register_shutdown_function('session_write_close'); 

    if (!$value) { 
     throw new \RuntimeException('Could not set the session\'s save handler'); 
    } 
} 

私の実際のハンドラの読み込み方法:

public function read($sessionId) 
{ 
    // Retrieve data from a custom source. Save in $data variable. 

    // Assign: $_SESSION = $data 
} 

は私が手動でセッションを移入する必要がありますか、これは何とかPHPにより自動的に行われる必要がありますか?

+1

'$ _SESSION'に' $ data'の値を保存しますか? –

+0

@MiteshPantはい。しかし、問題はPHPがこれを自動的に行うかどうかです。なぜならあなたはセッションラッパーを持っていても、セッションメソッドでそれと話しているからです。だから私はデータが$ _SESSIONに戻ってくると期待しています。 –

答えて

2

いいえ。PHPはread()ハンドラから戻り値を受け取り、それをシリアル化して、$ _SESSIONに結果を自動的に設定します。

+0

私はそれほど期待していましたが、ここで何か問題が起こっています。私は何も起こっていない。私の疑惑を確認してくれてありがとう。 –

+0

問題をローカライズしてみてください。 read()からハードコードされた値を返して、ハンドラが正しく登録されたことを確認します。それが動作すれば、問題はストレージロジックのどこかにあります。 –

+0

私はこのことで長い間苦労していました。しかし、適切なsession_encoded文字列ではない文字列でテストしていました。それは即座に今すぐ適切な文字列で動作します。何らかのエラーメッセージが表示されたらうれしいですが、もう一度悪い文字列を取得することはありません。助けてくれてありがとう。 –

関連する問題