我的网络应用程序中的用户登录有问题。我要做的是在他/她登陆主页之前用当前日期和时间更新特定用户的last_online_at
值。但是,它没有像我预期的那样更新。
这是我的代码:
...
if($result != FALSE){
$this->db->select('name');
$this->db->from('user_type');
$this->db->where("id ='" . $result[0]->user_type_id . "'");
$query = $this->db->get();
$session_data = array('first_name' => $result[0]->first_name,
'last_name' => $result[0]->last_name,
'username' => $result[0]->username,
'email' => $result[0]->email,
'id' => $result[0]->user_id,
'created_at' => date_parse($result[0]->created_at),
'recent_searches' => array(),
'food_tray' => array('Sample', 'Test', 'Qwerty'),
'logged_in' => TRUE,
'user_type' => $query->row()->name,
'user_type_id' => $result[0]->user_type_id,
'user_privileges' => array());
$this->session->set_userdata($session_data);
// LINE OF CODE RESPONSIBLE FOR UPDATING `last_online_at` VALUE //
$data = array('last_online_at' => date('Y-m-d H:i:s'));
$this->db->update('user', $data, 'id =' . $session_data['id']);
/////////////////////////////////////////////////////////////////
if($session_data['user_type'] == 'Customer'){
// REDIRECT TO USER PAGE
redirect(base_url() . "index.php/main");
}else if($session_data['user_type'] == 'Aggregator' ||
$session_data['user_type'] == 'Restaurant Owner' ||
$session_data['user_type'] == 'System Admin'){
// REDIRECT TO ADMIN DASHBOARD
redirect(base_url() . "index.php/admin?page_view=admin_dash");
}
}
从给定的代码片段中可以看出,我使用变量$session_data['id']
作为参数值替换为更新查询中的where子句,而那是不起作用的那个。但是当我将它替换为静态值(例如1)时,它将顺利运行并根据给定的静态值更新记录
我做错了吗?任何帮助将不胜感激
答案 0 :(得分:0)
首先,您需要确保$session_data['id']
中包含正确的值。
因此,在尝试使用print进行$session_data
echo "<pre>";
print_r($session_data);
echo "</pre>";
我还建议您使用CodeIgniter日志。
log_message('debug', 'Your Session Data: '.print_r($session_data, TRUE));
log_message('debug', 'You can see last executed query also: '.print_r($this->db->last_query(), TRUE));
在使用之前,请启用日志表单配置。
此技术可帮助您了解代码中发生的情况。
要进行更新,最后一次登录日期请尝试:
$data = array('last_online_at' => date('Y-m-d H:i:s'));
$this->db->where('id', $session_data['id']);
$this->db->update('user', $data);