RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 272
от 02.03.2006, 22:57

Администратор:Калашников О.А.
В рассылке:Подписчиков: 231, Экспертов: 38
В номере:Вопросов: 2, Ответов: 3


Вопрос № 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()". Эта процедура возвращает некую строку, можно ли из нее получить какую-то полезную информацию о сессии или чем-то еще, если да то какую и как?
Всем кто откликнется заранее СПАСИБО!
Отправлен: 25.02.2006, 20:48
Вопрос задал: Петров Павел Александрович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, Петров Павел Александрович!
Нет. Функция session_id() возвращает только уникальный идентификатор текущей сессии. В ней не закодировано никакой служебной информации. Функция session_name(), например, возвращает названия (имя) текущей сессии. А вот session_get_cookie_params() - это уже интересно. Тут можно прочитать cookies, сохранённые для данной сессии. Но вопрос касался только одной функции, поэтому я на этом остановлюсь.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 25.02.2006, 21:27
Оценка за ответ: 4
Комментарий оценки:
Спасибо за ответ.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.16 от 01.03.2006
Яндекс Rambler's Top100

В избранное