Вопрос № 36153: Здравствуйте!
При авторизации пользователя у меня возникла такая проблема:
При проверке несовпадения логина всё работает, т.е. если таклго пользователя не в БД, то выводиться $error (работает), а вот при проверке несовпадения паролей $error н...Вопрос № 36191: Доброе время суток, Эксперты!
Вопрос о "session_id()". Эта процедура возвращает некую строку, можно ли из нее получить какую-то полезную информацию о сессии или чем-то еще, если да то какую и как?
Всем кто откликнется заранее СПАСИБ...
Вопрос № 36.153
Здравствуйте!
При авторизации пользователя у меня возникла такая проблема:
При проверке несовпадения логина всё работает, т.е. если таклго пользователя не в БД, то выводиться $error (работает), а вот при проверке несовпадения паролей $error не появляется. Получается так, вводишь существующий логин, любой пароль (хоть правильный, хоть не правильный) и ты авторизован. Вроде всё проверил: передача post выполняется верно, пароль из mysql выводиться верно, но при сравнении не работает.
Приложение:
Отправлен: 25.02.2006, 13:36
Вопрос задал: Fem (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Cтепанов Андрей Валерьевич
Здравствуйте, Fem!
Во-первых надо изменить sql-запрос (см. приложение).
Во-вторых необходимо подставлять не "сырые" POST-данные, а проверить, MAGIC_QUOTES, и если эта опция выключена, то закрыть кавычки в строке при помощи addslashes().
В-третьих, необходимо проверить, какое количество строк вернула выборка. Должно вернуть одну строку.
Приложение:
--------- Все мы будем в аду, но я буду с вилами!!
Ответ отправил: Cтепанов Андрей Валерьевич (статус: 4-ый класс)
Отправлен: 25.02.2006, 15:03 Оценка за ответ: 5 Комментарий оценки: Всё работет! Проблема была в не правильном sql-запросе.
Отвечает: nkravt
Здравствуйте, Fem!
Ошибка в проверке условия:
if ( $_POST['login'] != $_searchUser['us_name'] && $_POST['password'] != $_searchUser['us_password'] )
{$error .= "Логин или пароль указан не правильно<br>";}
Оно срабатывает, только когда оба условия выполняются одновременно. Нужно изменить условие (поставить логическое "или" вместо "и") вот так:
if ( ($_POST['login'] != $_searchUser['us_name']) || ($_POST['password'] != $_searchUser['us_password']) )
{$error .= "Логин или пароль указан не правильно<br>"; }
А вообще-то проверку лучше делать при выборе из базы:
$sql_searchUser = "SELECT * FROM `cms_users` WHERE `us_name` = '".$_POST['login']."' AND `us_password`=".$_POST['password'];
Естественно, если пароль захеширован, то и проверять нужно хеш.
И если не одной записи не найдено, то логин или пароль не правильный.
Ответ отправила: nkravt (статус: 2-ой класс)
Отправлен: 25.02.2006, 15:07 Оценка за ответ: 4 Комментарий оценки: Зачем мне ||. Мне нужно что бы совпался логин и пароль к нему, а не что-то одно. А то получиться тоже самое: пиши существующий логин и всякий бред в поле пароль, и авторизация пройдёт успешно.
Вся проблема была sql-запросе. Этот скрипт я написал на второй день, после знакомства с MySQL.
Хеша пока нет. Добавлю на более поздних стадиях.
Вопрос № 36.191
Доброе время суток, Эксперты!
Вопрос о "session_id()". Эта процедура возвращает некую строку, можно ли из нее получить какую-то полезную информацию о сессии или чем-то еще, если да то какую и как?
Всем кто откликнется заранее СПАСИБО!
Отвечает: Ерёмин Андрей
Здравствуйте, Петров Павел Александрович!
Нет. Функция session_id() возвращает только уникальный идентификатор текущей сессии. В ней не закодировано никакой служебной информации. Функция session_name(), например, возвращает названия (имя) текущей сессии. А вот session_get_cookie_params() - это уже интересно. Тут можно прочитать cookies, сохранённые для данной сессии. Но вопрос касался только одной функции, поэтому я на этом остановлюсь.
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 25.02.2006, 21:27 Оценка за ответ: 4 Комментарий оценки: Спасибо за ответ.