Я работаю над php-скриптом, который проверяет пользователя, который вошел в систему, он включает в себя обеспечение того, чтобы они ввели как адрес электронной почты и пароль, подключившись к sql, так и проверив данные, зарегистрировав сеанс и обновив время входа в систему.Корректная отчетность об ошибках для php
Сценарий не работает, когда пользователь заполняет форму и направляется на эту страницу, она подходит к сообщению об ошибке внизу инструкции ELSE. Он не обновляет «last_login» в sql.
Мне было интересно, как я начинаю устранять этот сценарий, где можно разместить обработку ошибок?
session_start();
include 'dbconuser.php';
//post var
$email_address = $_POST['email_address'];
$password = $_POST['password'];
//check both fields completed
if((!$email_address) || (!$password))
{
echo "Please enter ALL of the information!<br/>";
include 'login.htm';
exit();
}
$password = md5($password);
//connect and check data
$sql = mysqli_query($connection, "SELECT * FROM users WHERE email_address='$email_address' AND password='$password' AND activated='1'");
$login_check = mysqli_num_rows($sql);
if($login_check > 0)
{
while($row = mysqli_fetch_array($sql))
{
foreach($row AS $key => $val)
{
$key = stripslashes($val);
}
// register session
$_SESSION['first_name'] = $first_name;
$_SESSION['last_name'] = $last_name;
$_SESSION['email_address'] = $email_address;
$_SESSION['user_level'] = $user_level;
mysqli_query($connection, "UPDATE users SET last_login=now() WHERE userid='$userid'");
header("Location: index.php");
}
}
//error
else
{
include 'login_error.htm';
echo "You could not be logged in! Either the email_address and password do not match or you have not validated your membership!<br />
Please try again!<br />";
}
смешивание mysql и mysqli? –
У вас есть недопустимое сочетание 'mysqli _ *()' и устаревших 'mysql _ *()' вызовов функций. Обзор [Как предотвратить SQL-инъекцию в PHP] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) и начать преобразовывать все это в MySQLi. Используя примеры в связанном вопросе и документацию MySQLi ['prepare()/execute()') (http://php.net/manual/en/mysqli.prepare.php), настало время начать обучение для использования подготовленных операторов, которые будут исправлять вашу уязвимость в SQL-инъекции. –
Im не один для SQL-инъекции, поэтому я не уверен, но кто-то может просто опубликовать что-то, где email_address есть что-то вроде «OR userid = 1; - – OIS