わかりました、これは私を当惑させます。
ユーザーがログインすると、次のようにセッションにユーザーデータを設定します。
$data = array();
$data['email'] = $this->input->post('email');
// get the user's info where it matches their email in the db.
$user = $this->User_model->get_user($data);
$this->session->set_userdata('user_session', $user);
これでうまくいきます。user_session
セッションデータをオブジェクトとして作成します。私は大丈夫です。
user_session
次に、ユーザーが情報を更新したら、新しいデータと一致するようにデータをリセットしたいと思います。私はこれを次のようにします:
$data = array(
'first_name' => $this->input->post('first_name'),
'last_name' => $this->input->post('last_name'),
'email' => $this->input->post('email'),
'phone' => $this->input->post('phone'),
'street1' => $this->input->post('street1'),
'street2' => $this->input->post('street2'),
'city' => $this->input->post('city'),
'state' => $this->input->post('state'),
'zip' => $this->input->post('zip'),
'password' => $encrypted_password,
'organizations_id' => $this->input->post('org_select')
);
$user = $this->User_model->get_user($data);
$this->session->set_userdata('user_session', $data);
ここ$data
では、DB 内の情報を更新するために使用されており、それを再利用して、email
.
最後に、両方に使用するモデル メソッドを次に示します。
public function get_user($data)
{
return $this->db
->where('email', $data['email'])
->select('first_name, last_name, email, password, id, organizations_id')
->get('users')
->row();
}
これは機能しますが、異なります。オブジェクトを与える代わりに、配列を与えるだけです。これにより、コードの他の場所で多くの問題が発生します。
オブジェクトまたは配列を取得するかどうかを制御するにはどうすればよいですか?
編集:
ばかげた動きに気づきました。ユーザーが情報を変更したときに、モデル$data
の代わりに送信していました。$user
だから私は問題を修正し、今では両方のオブジェクトを取得しています。しかし、2 つの方法でどのように異なる結果が得られたかを知りたいと思っています。そうすれば、私は将来それを制御することができます。
そうは言っても、ここに私の公式の質問があります:
セッション データの入力を制御して、配列またはオブジェクトにする方法を教えてください。