0

PHP アプリケーションを持っていますが、SESSION から User オブジェクトを取得できません。

オブジェクトを保存すると、次のコード(他のファイル)があります。

$_SESSION['user'] = serialize($user);

この問題は、timeline.php というファイルを読み込もうとしたときに始まります。ページを初めてロードしたとき (ログインして SESSION['user] を設定した後)、ページは正常に動作します。ページを更新すると、エラー 500 が表示されます。

エラー ログには次のように表示されます。

10 行目で、timeline.php の非オブジェクトに対してメンバー関数 get() を呼び出します。

2 行目から 10 行目のコードは次のとおりです。

include_once('isUserLoggedIn.php');
require_once('classes/User.php');

session_start();

$user = unserialize($_SESSION['user']);

require_once('classes/Database.php');
$tweets = Database::getTimeline($user->get('user_id'));

誰かがこれの理由を提供できますか?

更新 (1)

timeline.php の 8 行目に var_dump($user) を追加しました。最初にページをロードすると、正しい値が返されます。

ページを 2 回目に読み込むと、bool(false) が表示されます。

更新 (2)

問題はホストにあるようです (おそらく php.ini ファイルの設定)。私が使っていた会社は Fatcow です。他の誰かのホスト (1and1) を使用した場合、問題は発生しませんでした。

4

1 に答える 1

0

オブジェクトのシリアル化を解除すると、多くの奇妙なことが発生する可能性があります。詳細については、PHP のマニュアル ページを参照してください。

http://php.net/manual/en/function.unserialize.php

このコメントは適切なようです: http://www.php.net/manual/en/function.unserialize.php#77826

于 2012-11-04T19:12:59.143 に答える