[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Авторизация. Проблема с mysql_fetch_array
-=J@GU@R=-
Доброго времени суток!

Вот элементарная вещь, а никак не работает :angry: Написал наброски авторизации пользователя.

КОД:
if(!$_POST['enter'])
{
echo "
<form action=
\"\" method=\"POST\">
<input type=
\"text\" name=\"email\" value=\"E-Mail\"><br>
<input type=
\"password\" name=\"pass\" value=\"Pass\"><br>
<input type=
\"submit\" name=\"enter\" value=\"Отправить\">
</form>
"
;
} else {
include("db_conn.php");
mysql_select_db(CMS) or die(mysql_error());
$email=$_POST['email'];
$pass=md5($_POST['pass']);
$sql=mysql_query("SELECT * FROM administration WHERE `email`='".$email."' AND `pass`='".$pass."'") or die(mysql_error());
if($sql==TRUE)
{
$admin=mysql_fetch_array($sql);
echo $admin['email'];
echo "<br>".$admin['pass'];
echo "Вы вошли на сайт!";
} else {
echo "Доступ запрещён!";
}
?>
После
$admin=mysql_fetch_array($sql);
выводится сообщение "Вы вошли на сайт!". Никаких $admin['email'] и $admin['pass'] в помине нет.

Подскажите пожалуйста, почему у меня в массиве пустота?



Спустя 14 минут, 45 секунд (11.01.2012 - 18:22) inpost написал(а):
if(!$_POST['enter']) - проверка на boolean, true or false. При этом в обоих случаях переменная должна существовать, иначе WARNING.
Чтобы не париться с кавычками, используй одинарные: echo '<div style="text">';, не забываем, что свойства аттрибутов тега должны быть в двойных!
Для инклюда скобки не нужны.
Запрос mysql_query вернёт TRUE в случае, если запрос не содержит ошибки. Ответы такие: есть 5 записей, есть 100 записей, есть 0 записей, но всё это есть ответы, и ссылка на ресурс, где ответ хранится. Проверка на то, есть ли указанная запись - mysql_num_rows(), то есть число, сколько таких записей есть в БД.

Спустя 12 минут, 14 секунд (11.01.2012 - 18:34) -=J@GU@R=- написал(а):
Цитата
Проверка на то, есть ли указанная запись - mysql_num_rows()

Исправил условие на mysql_num_rows($sql)==1 - теперь выводит "Доступ запрещён!"

Почему то выводит совсем другой хеш одного и того же пароля blink.gif Неожиданно...

Спустя 4 минуты, 40 секунд (11.01.2012 - 18:39) inpost написал(а):
echo md5('Пароль');
Сделай и смотри, обновляй страницу. Может пробелы лишние, их убрать надо было через trim

Спустя 3 минуты, 33 секунды (11.01.2012 - 18:42) -=J@GU@R=- написал(а):
Цитата
echo md5('Пароль');
Сделай и смотри, обновляй страницу.

подставил свой пароль и мне выдал 3ий вариант... бред какой-то...

Спустя 6 минут, 33 секунды (11.01.2012 - 18:49) inpost написал(а):
-=J@GU@R=-
Может ты кодировку не указал на всех 6-и уровнях?
1. Через header().
2. В БД
3. Соединение с БД
4. htaccess
5. в теге <head>
6. Кодировка самого файла.

Чтобы убедиться, что беда в кодировке, протестируй пароль на цифрах или англ.символах.

Спустя 7 минут, 16 секунд (11.01.2012 - 18:56) johniek_comp написал(а):
-=J@GU@R=-
Код не верно написан, вы наверно по видео урокам учились? Если да то прошу сюда и сюда

Спустя 2 минуты, 35 секунд (11.01.2012 - 18:59) -=J@GU@R=- написал(а):
Цитата
Может ты кодировку не указал на всех 6-и уровнях?

В БД cp1251, при выборе БД она же, файл в Windows-1251

Цитата
Чтобы убедиться, что беда в кодировке, протестируй пароль на цифрах или англ.символах.

пароль цифровой

Спустя 2 минуты, 48 секунд (11.01.2012 - 19:02) inpost написал(а):
Данные перед md5 обрабатываешь через trim?
Выведи отдельно пароль: echo md5('12345'); и echo md5(trim($_POST['pass']));

Спустя 13 минут, 21 секунда (11.01.2012 - 19:15) -=J@GU@R=- написал(а):
Цитата
вы наверно по видео урокам учились?

нет, обошлось без них)
Цитата
Выведи отдельно пароль: echo md5('12345'); и echo md5(trim($_POST['pass']));

Всем спасибо, вопрос решён... вывелись разные кэши... правда не понимаю почему( вводил без ошибок и без лишних символов...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.