当我在网站上刷新任何页面时,经过一段时间的随机登录后,有时会运行得很好,但有时会出现错误,比如试图在不同的模型和控制器文件行上获得属性。
例如,当我刷新页面错误时,如下所示,模型名为user_model,控制器名为User.php:
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');
}注销后删除会话的代码:
$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');
}在这里,我发现了Tring在user_model.php的第135行上获得非对象属性的错误,在回溯中它在第145行的Users.php上发现了错误。
我已经注意到,当我在模型中得到这种类型的错误时,我使用存储会话数据的会话变量$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的值没有设置,那么它应该在注册页面上进行。
所以,我不明白什么是真正的问题。因为有时候它工作得很完美,有时却不行。一旦我犯了这样的错误,我就必须清除我的历史,而不是再次登录。
发布于 2016-10-03 20:35:39
在Codeigniter中,您有一种在会话中获取表单或设置值的特定方法。
如果要检查会话是否存在,则需要执行以下操作:
$this->session->userdata('email');它将检索存储的值。正如你已经做的那样:
$this->session->set_userdata('email', $email);若要在会话中设置值,请执行以下操作。
另外,当用户正在注销yoi时,需要重置存储的值,但实际上它永远不会是空的。
$this->session->set_userdata('email','');
注意:您所做的当然不是这样做的最佳方式,比如登录和注销系统。我想你只是在学习,你这样做并不是为了一个生产应用程序。
如果需要,请尝试将ionAuth身份验证库用于Codeigniter,您可以在这里找到:
auth/
然后学习一些关于它的教程:
http://www.tutorials.kode-blog.com/codeigniter-authentication
只需记住,用户身份验证是一个严重的安全问题,所以请小心.
https://stackoverflow.com/questions/39839044
复制相似问题