Если переменные, входящие в ваши запросы, не санированы где-то, чего мы не видим, любой ребенок с помощью SQL-инъекции tool . * Может подорвать его за минуты1005 *
Всегда экранировать переменные перед тем, как помещать их в запросы.Поскольку вы используете какую-то обертку базы данных (пользовательскую?), Я не могу сказать вам точный способ сделать это.Обычно (например, при использовании PDO) он включает параметризованные подготовленные операторы.
Кроме того, этот код является расточительным.Как насчет этого:
// WARNING -- WARNING -- HERE PROBABLY BE SQL INJECTIONS
$rs=$DBobject->execute_query(
"select * from users where `email`='".$email."' and password`='".passwordMD5($password)."'");
// Is there such a user?
if($DBobject->my_num_rows($rs) == 0) {
return "Invalid email/password";
}
// Now fetch the record from $rs -- I don't know how your code does this,
// but let's assume:
$row = $rs->getRow();
// Now check if the user is cancelled
if ($row['status'] == 'cancelled') {
return "Your account has been cancelled";
}
// Login the user, since the account exists and is not cancelled
Таким образом, вам нужно всего лишь один раз нажать на БД для успешного входа в систему.