ホームページ > バックエンド開発 > PHPチュートリアル > SESSION 内の配列が取得される場合と取得されない場合があるのはなぜですか?

SESSION 内の配列が取得される場合と取得されない場合があるのはなぜですか?

WBOY
リリース: 2016-06-13 11:59:54
オリジナル
1307 人が閲覧しました

SESSION 内の配列が取得される場合と取得されない場合があるのはなぜですか?
ログイン後: ユーザーオブジェクト user を SESSION に入れ、次のように $_SESSION['user']['priv'] にアクセスします。これが空の場合は、アクセスする前に
$user=$_SESSION['user']; を追加する必要がある場合があります。$_SESSION['user']['priv'] のように直接アクセスできます。 ? どうしたの?
私のphpバージョン5.4.22
-----解決策---------

この投稿は 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に値を代入するコードで原因を見つけるしかありません

おそらく
データベースから取り出したユーザーオブジェクトは配列である場合もあれば、オブジェクトである場合もあります
-----解決策--- -------------- ---
引用: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レポートをお待ちください~~



------解決策-- ------------------問題が明確に説明されていなかったようで、その理由は見つかりません。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート