ウェブサイト上のページを更新するときにログインした後、時には完全に動作しますが、モデルやコントローラファイルの異なる行にプロパティを取得しようとするなどのエラーが表示されることがあります。例えば時々、非オブジェクトのプロパティを取得しようとしています
、iはページエラーがUser.php命名user_modelおよびコントローラというモデルの機能の下に示されたリフレッシュ:
User_model.php:
public function get_client_id($email)
{
$this->db->select('id');
$this->db->where('email', $email);
$query = $this->db->get('crm_accounts');
$result = $query->row();
return $result->id; //line 135
}
Users.php:
$email = $_SESSION['email'];
$id = $this->user_model->get_client_id($email); //line 145
ログイン後にセッション値を設定する:
$email = $this->input->post("email");
$password = $this->input->post("pass");
$result = $this->user_model->login($email, $password);
if ($result == TRUE)
{
$this->session->set_userdata('email',$email);
$this->session->set_userdata('logged_in',TRUE);
$data = $this->user_model->get_username($email);
$this->session->set_userdata('data', $data);
redirect('admin_view');
}
else
{
$this->load->view('all_field');
}
01ログアウト後にセッションを削除する
コード:ここで
$logged_in = $this->session->userdata('logged_in');
$log = $this->session->userdata('email');
if($logged_in || (!empty($log)))
{
$array_item = array('email', 'logged_in');
$this->session->unset_userdata($array_item);
redirect('');
}
else
{
$this->load->view('error_page');
}
、私はuser_model.phpのライン135上の非オブジェクトのプロパティを取得するために トリングのようにエラーを持って、バックトレースにそれがユーザーにエラーを検出しました.php on line 145
私はモデルでこのタイプのエラーが発生したとき、セッションデータ$ emailを使用してその特定のメソッドでデータを取得していることに気付きました。しかし、私はコントローラーにそのような条件を入れました:
public function index()
{
if(!empty($_SESSION['email']))
{
$email = $_SESSION['email'];
$data = $this->user_model->get_username($email);
$this->session->set_userdata('data',$data);
redirect('clientview');
//echo "You are already logged in";
}
else
{
$this->load->view('signup');
}
}
したがって、セッション変数$ emailの値がサインアップページに行くよりも高く設定されていないとします。
私は実際に何が問題になっているのか分かりません。ときどき完璧に動作することもあります。一度そのようなエラーが出たら、私は履歴を消去しなければならず、もう一度ログインする必要があります。
ありがとうフランコ。あなたは私が学んでいると言いました。だから、あなたの指示に感謝します。 –
しかし、私はログアウトした後、私はunset()メソッドでセッションをクリアしていると言いたい。私の問題とログアウトの間には何らかの関係がありますか? –
'Codeigniter'セッションルールに従う必要があります。セッション$ this-> session-> set_userdata( 'email'、 '"");をリセットしなければならないと言ったので、あなたの問題はここにあります:if(!empty($ _ SESSION [' email '])) – Franco