ユーザーが自分のアカウントでログインした後、プログラムでセッションを設定しようとしています。ユーザーが適切な電子メールとパスワードを入力した場合、プログラムは次のようにいくつかの変数を設定します。
$_SESSION['user']['id'] = $row['id'];
$_SESSION['user']['email'] = $email;
$_SESSION['user']['admin'] = $row['admin'];
$_SESSION['logged'] = true;
問題は、上記のコードの最初の 3 行からこの警告が表示されることです。
警告: C:\Program Files (x86)\Zend\Apache2\htdocs\OOPeshop\user\User.php の 193 行目に不正な文字列オフセット 'id' があります
すべての変数が設定されているかどうかを確認したので、コードに次の 2 行を追加します。
var_dump($row);
var_dump($email);
しかし、それは大丈夫だった、私は出力を得ていた
array(2) { ["id"]=> string(2) "14" ["admin"]=> string(1) "0"}
文字列(22) "foobar@gmail.com"
それで、誰かが私に問題がどこにあるのか説明できますか? 同様の質問を確認しましたが、問題の解決策が見つかりませんでした。
私はこれを試しました:
$user = array('id' => $row['id'], 'email' => $email, 'admin' => $row['admin']);
$_SESSION['user'] = $user;
もう警告はありません。最初に配列を設定してから、配列全体をセッション変数に設定しましたが、うまくいきましたが、最初のコードのどこに問題があるのかわからないので、理解のある人がよりよく説明できるかもしれません。