У меня есть таблица пользователей с именем users
и таблица журналов с именем ulog
.Каждый раз, когда пользователь входит в систему, страница добавляет новую запись в таблицу журнала.
Чтобы предотвратить ошибки, перед входом я проверяю, вошел ли пользователь в систему или нет (я знаю, что это не так важно, есть другие методы для этой цели: например, я могу предотвратить это).проверяя файлы cookie или сеанс тоже, но мне интересно, как я могу сделать это с моей идеей).
Проблема в том, что код отлично работает, если в таблице ulog
есть хотя бы одна строка о пользователе, который в данный момент пытается войти в систему.Если пользователь хочет войти в систему в первый раз, возникает проблема: код «пролетает» над операторами if ($stmt->num_rows > 0) {
и выбирает else
.(потому что num_rows возвращает 0)
Как я могу изменить свой запрос для обработки в обеих ситуациях: когда пользователь входит в систему в первый раз, а во второй, третий ... раз?
Мой код входа со стороны php выглядит следующим образом.
$stmt = $db->prepare("SELECT u.id, u.fname, u.lname, u.mname, u.level, u.pass, u.salt, u.approved, u.ban, u2.logged_in FROM `users` AS u, `ulog` AS u2 WHERE u.email=? AND u2.user_id=u.id") or die($db->error);
$stmt->bind_param("s", $email) or die($stmt->error);
$stmt->execute() or die($stmt->error);
$stmt->store_result();
if ($stmt->num_rows > 0) {
$stmt->bind_result($id, $fname, $lname, $mname, $level, $db_pass, $salt, $approved, $ban, $logged_in) or die($stmt->error);
$stmt->fetch() or die($stmt->error);
if ($logged_in == 0) {
}
else die("You're already logged in");
}
else die("There is no such email in db");