Ich arbeite an einem Webcode, der Codeigniter und den eingebauten QueryBuilder verwendet, um auf eine Datenbank zuzugreifen.Datenbankabfrage mit falscher Zeile
ich versuchen, Daten aus der Datenbank für den aktuellen Benutzer für getUser
$userModel = $this->loadModel('ModelUser');
$name = $this->session->userdata('user');
$user = $userModel->getUser($name);
Dies ist der Code zu laden:
function getUser($username)
{
$this->db->where('username',$username);
$query = $this->db->get('tblusers',1);
$res = $query->result();
if ($query->num_rows() > 0)
{
log_message('debug','Got user. ID = '.$res[0]->id);
foreach($res[0] as $key => $val)
{
$this->$key = $val;
}
return $this;
}
else {
log_message('info','failed to find user '.$username);
return NULL;
}
}
Dies funktioniert gut, es sei denn, ich lasse die Sitzung abläuft, in denen Fall bekomme ich die Details eines anderen Benutzers.
Dies sind die Ergebnisse der Tests getUser
:
$userModel->getUser("Admin"); //Got user. ID = Admin_ID
$userModel->getUser("john"); //Got user. ID = John_ID
$userModel->getUser(""); //Failed to find user
$userModel->getUser(null); //Failed to find user
Als ich als Admin
log dann die Session-Timeout lassen, meldet sich der Top-Schnipsel die Meldung:
Got user. ID = John_ID
Ich würde erwarten, entweder Got user. ID = Admin_ID
oder
Sie können diese Funktion aufrufen, wenn die Sitzung anders eingestellt ist, rufen Sie diese Funktion nicht auf, Sie können die Nachricht ** Sitzung ist abgelaufen ** einstellen. –
Ich verstehe, wie man das Problem verhindert, aber ich verstehe die Ursache nicht –