Где ошибка в скрипте авторизации? Написал легкую сис-му авторизации на ОПП, которая в свою очередь работает на сессиях.
Собственно сама функция.function login() {
if (!empty($_POST)) {

$login = mysql_real_escape_string(htmlspecialchars($_POST['login'])); //немного профильтруем логин
$password = md5($_POST['password']); //хешируем пароль т.к. в базе именно хеш
$user = $this->db->query("SELECT * FROM rust_users WHERE login = ? AND password = ?",$login,$password)->assoc();

if (mysql_num_rows($user) == 1) {
$row = mysql_fetch_assoc($user);
$_SESSION['id'] == $row['id'];
$_SESSION['login'] == $row['login'];
setcookie("CookieMy", $row['id'], time()+60*60*24*10);

//header("Location: /");
} else
$this->error = 'Неправильный емейл или пароль';
}
$this->out('login.php');
}
Ошибка: Warning: mysql_num_rows() expects parameter 1 to be resource, null given in Y:\home\oop.ru\www\app\ctrlIndex.php on line 21. Я понимаю, что в mysql_num_rows() ничего не приходит, но не могу разобраться из-за чего.

21 Авг 2019 в 07:08
176 +1
0
Ответы
1

Ошибка возникает потому, что вы используете неправильное соединение с базой данных в вашем запросе. Вместо использования mysql_num_rows() и mysql_fetch_assoc(), вы должны использовать методы вашего объекта $user, который в данном случае является результатом выполнения запроса к базе данных. Вместо этого используйте методы fetch_assoc() и num_rows() для работы с результатами запроса.

Исправленный код должен выглядеть примерно так:

function login() {
if (!empty($_POST)) {
$login = mysql_real_escape_string(htmlspecialchars($_POST['login'])); //немного профильтруем логин
$password = md5($_POST['password']); //хешируем пароль т.к. в базе именно хеш
$user = $this->db->query("SELECT * FROM rust_users WHERE login = ? AND password = ?", $login, $password)->assoc();
if ($user->num_rows() == 1) {
$row = $user->fetch_assoc();
$_SESSION['id'] = $row['id'];
$_SESSION['login'] = $row['login'];
setcookie("CookieMy", $row['id'], time() + 60 * 60 * 24 * 10);
//header("Location: /");
} else {
$this->error = 'Неправильный емейл или пароль';
}
}
$this->out('login.php');
}

Помимо этого, убедитесь, что у вас правильно настроено соединение с базой данных в свойстве $db вашего объекта.

20 Апр в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 548 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир