この投稿は xuzuning によって最終編集されました: 2014-06-12 16:34:52 テスト コードを提供したほうがよいです
少なくとも失敗したときは、var_dump($_SESSION['user ' ]); 結果
-----解決策--------------------------最初外部要因を排除するには、出力 $_SESSION['user']['priv'] をテストしたときに、最初のアクセスがまだ来ておらず、セッションが設定されていた可能性がありますか?
再現できないテストソリューション
-----ソリューション---------コードが間違って書かれているのではないかと疑ったことはありませんか?
$_SESSION['user']['priv'] = '' ; //priv赋值为空,谁取它都是空!
ログイン後にコピー
-----解決策---------$ _SESSIONライフサイクル デフォルトの時間は 20 分です
明らかに時間を超えています
------解決策------ --デバッグを容易にするために、それぞれの状況を記録するログを作成する必要があります。
------解決策----------------------初回 var_dump($_SESSION['user '] ); 価値はありますか?分析用のコードを投稿することをお勧めします。
------解決策----------------------再現できません。テストコードはコードが異なる場合、コードを提供しない場合はどうやって分析できますか?
ログを追加すると、ログが読み取られるたびに、
var_dump($_SESSION['user']);
var_dump($_SESSION['user']['priv' ]) ;
問題を見つけるのに便利です。
------解決策---------投稿者の意味は、2回目以降のアクセス、どちらの方法を使っても問題ありませんが、最初の訪問では、2D を直接読み込むと何かが起こりますが、それを正しく理解しているかどうかはわかりません...<🎜。 >
--- ---解決方法--------
文字化けが原因でしょうか?
------解決策---------
print_r($_SESSION['user']) ;
これにより、データ構造情報も同時に取得できるため、判断材料となります
エラーを再現できないため、$_SESSIONに値を代入するコードで原因を見つけるしかありません
おそらく
データベースから取り出したユーザーオブジェクト
は配列である場合もあれば、オブジェクトである場合もあります-----解決策--- -------------- ---
である場合もあります。実際、問題はセッションの割り当て中に発生していると思います。
------解決策----------------------
これは、thinkphp のセッション関数がセッションを読み取る方法です。コード:
<br /> if (strpos($name, '.')) {<br /> list($name1, $name2) = explode('.', $name);<br /> return isset($_SESSION[$prefix][$name1][$name2]) ? $_SESSION[$prefix][$name1][$name2] : null;<br /> } else {<br /> return isset($_SESSION[$prefix][$name]) ? $_SESSION[$prefix][$name] : null;<br /> }<br />
ログイン後にコピー
セッションに本当にバグがある場合、TP ユーザーはずっと前に反応していたと思います。彼が読み取ったセッションはすべて 2 次元で直接読み取られるでしょう
私は提案します。投稿者が最初にビジネス ロジックとセッションの割り当てで理由を見つけてください
さらに、誰かがあなたと同じ問題を抱えているとおっしゃいました。リンクをいくつか投稿できるかわかりません
-- ----解決策------ -------------
データベースから取得したデータに異常がないか確認してください
--- ---解決策-------- -----------
コメントを残して、PHP BUGレポートをお待ちください~~
------解決策-- ------------------
問題が明確に説明されていなかったようで、その理由は見つかりません。