[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Система восстановления пароля
PiratXXX
Привет всем!

Прошу Вашей помощи!

Помогите пожалуйста!

Итак, я сделал регистрацию и авторизацию пользователей! Ну и почти сделал восстановление пароль по вопросу! Я предпологаю, что моя проблема связана как-то с if, else...

Вот код:

<?php
/* Подключаем файл стилей(дизайн сайта) */
echo "<link href='../style.css' rel='stylesheet' type='text/css' />";
/* Подключаем файл конфигурации */
include "../config.php";

echo "<div class='borderradius'>";
echo "<img src='../img/key.png' width='16' height='16' alt=''> <b> Восстановление пароля</b><br>";

/* Форма для ввода логина */
echo "<form action='' method='POST'>";
echo "<img src='../img/empty.png' width='16' height='16' alt=''> Введите Ваш логин!<br><br>";
echo "<input name='login' type='text' size='' maxlength='15' id='s200'> Логин<br><br>";
echo "<br><center><input type='submit' name='submit' value='Получить вопрос' id='s150'</center></center>";
echo "</form>";
echo "<br><img src='../img/bullet_blue.png' width='16' height='16'><a href='../'> Назад</a><br>";
echo "</div>";

echo "<div class='borderradius'>";
/* Заносим информацию введенну в поле, в переменную. Если переменная не существует она будет NULL, а если существует то будет сама собой. */
$login = ( isset($_POST['login']) )? $_POST['login'] : NULL;

/* Проверяем включены ли "волшебные ковычки", и если они вдруг включены, то вырезаем слеши, которые автоматически вставились */
if(get_magic_quotes_gpc())
{
$login = stripslashes($login);
}

/* Удаляем пробел в конце и в начале, снова экранируем, и удаляем html и php теги */
$login = trim(strip_tags(mysql_real_escape_string($login)));

/* Проверяем ввел ли пользователь логин, если нет то выводим ошибку */
if (empty($login))
{
echo "<img src='../img/cancel.png' width='16' height='16'> <font color='#CC0000'><b>Вы не ввели логин!</b></font><br>";
}

else
{
/* Проверяем зарегистрирован ли пользователь с данным логином */
$user_inf = mysql_fetch_row(mysql_query("SELECT * FROM `users` where login = '$login'"));
if (empty($user_inf[0]))
{
echo "<img src='../img/cancel.png' width='16' height='16'> <b>Логин: $login <br>
<img src='../img/empty.png' width='16' height='16'><font color='#CC0000'> НЕ ЗАРЕГИСТРИРОВАН!</b></font><br>"
;
}

else
{
echo "<img src='../img/accept.png' width='16' height='16'> <b>Ответьте на вопрос:</b><br>
<img src='../img/empty.png' width='16' height='16'>
$user_inf[24]<br><br>";

/* Форма для ввода ответа на вопрос */
echo "<form action='' method='POST'>";
echo "<input name='answer' type='text' size='' maxlength='50' id='s200'> <font size = -7 color='999999'> <b>Введите Ваш ответ!</b></font><br> <br>";
echo "<br><center><input type='submit' name='submit1' value='Ответить' id='s150'</center></center>";
echo "</form>";

/* Заносим информацию введенну в поле, в переменную. Если переменная не существует она будет NULL, а если существует то будет сама собой. */
$answer = ( isset($_POST['answer']) )? $_POST['answer'] : NULL;

/* Проверяем включены ли "волшебные ковычки", и если они вдруг включены, то вырезаем слеши, которые автоматически вставились */
if(get_magic_quotes_gpc())
{
$answer = stripslashes($answer);
}

/* Удаляем пробел в конце и в начале, снова экранируем, и удаляем html и php теги */
$answer = trim(strip_tags(mysql_real_escape_string($answer)));

/* Проверяем правильно ли пользователь ответил на вопрос */
if($answer === $user_inf[25])
{
echo "<img src='../img/accept.png' width='16' height='16'> Поздравляем! Вы правильно ответили!<br>
<img src='../img/empty.png' width='16' height='16'> <b>Логин:</b>
$user_inf[2]<br>
<img src='../img/empty.png' width='16' height='16'> <b>Пароль:</b>
$user_inf[3]<br>";

echo "<img src='../img/bullet_blue.png' width='16' height='16'><a href='authorization.php'>Авторизация</a>";
}
else
{
echo "<img src='../img/cancel.png' width='16' height='16'> <b>Вы <font color='#CC0000'>НЕ</font> правильно ответили на вопрос!<br>
<img src='../img/empty.png' width='16' height='16'> Попробуйте еще!</b><br>"
;
}
}
}


echo "</div>";
?>


А теперь моя проблема!

1. Когда заходишь на эту страницу уже висит сообщение "Вы не ввели логин!"(т.е. еще до того как ввел логин и нажал кнопку). Как сделать чтобы оно появлялось только после нажатия на кномку?

2. Когда ввел логин нажал на кнопку, и скрипт определяет что такой пользователь есть в бд, показывает сообщение что ответьте такой-то вопрос, внизу уже сразу висит сообщение о том что вы не правильно ответили на вопрос.

3. Когда ввел ответ на вопрос без разници правильный или нет выскакивает сообщение "Вы не ввели логин!".

Ну вот собственно й все проблемы!

Помогите пожалуйста!!!

За ранне благодарен!!!



Спустя 37 минут, 7 секунд (19.06.2010 - 19:20) Basili4 написал(а):
делай перед вводом логина
$login = ( isset($_POST['login']) )? $_POST['login'] : NULL;

если $login==NULL значит выводи форму авторитизации а после неё die

иначе делай проверки

Спустя 4 минуты, 9 секунд (19.06.2010 - 19:24) PiratXXX написал(а):
Basili4

извини, но чето я не совсем понял!
можешь объяснить для особо одаренных!(

Спустя 3 минуты, 25 секунд (19.06.2010 - 19:27) Ice написал(а):
1. Первая проблема появляется из-за отсутствия проверки на существование соответствующих ключей в переменной _POST.

2. Вторая проблема, видать, имеет те же корни.

3. Третью проблему можно решить, записывая логин в массив _SESSION и произвести проверку существования соответствующих данных в этом массиве, и в зависимости от этого вообще запретить отвечать на вопросы незареганным.

Спустя 1 час, 51 минута, 25 секунд (19.06.2010 - 21:19) PiratXXX написал(а):
Короче достало!!!

Просто сделал обработку второй формы в другом файле! и все норм! mad.gif

Спустя 4 минуты, 39 секунд (19.06.2010 - 21:23) Ice написал(а):
А чего ты весь (или почти весь) HTML в РНР загнал? Сделал бы отдельно функции обработки, отдельно HTML, отдельно, там CSS, было бы круче.

Спустя 17 минут, 10 секунд (19.06.2010 - 21:40) PiratXXX написал(а):
Ice
А, я даже не знаю!
Наверное из-за того как только начал что-то делать с php, а я это делал с готовым скриптом чата(лучшее что нашел бесплатно), кстати хороший чат функций больше чем на сасисе, ну вообщем там было так, там даже css не не было, тоже было загнано в php.

И наверное так и сталось в голове!)))

А вообще как правильно(лучше)? html отдельно, php отдельно и т.д. да?

Спустя 1 час, 6 минут, 48 секунд (19.06.2010 - 22:47) inpost написал(а):
echo "<div class='borderradius'>";
echo "<img src='../img/key.png' width='16' height='16' alt=''> <b> Восстановление пароля</b><br>";/* Форма для ввода логина */
echo "<form action='' method='POST'>";echo "<img src='../img/empty.png' width='16' height='16' alt=''> Введите Ваш логин!<br><br>";
echo "<input name='login' type='text' size='' maxlength='15' id='s200'> Логин<br><br>";
echo "<br><center><input type='submit' name='submit' value='Получить вопрос' id='s150'</center></center>";
echo "</form>";echo "<br><img src='../img/bullet_blue.png' width='16' height='16'><a href='../'> Назад</a><br>";echo "</div>";
echo "<div class='borderradius'>";


Эта часть, где нет необходимости для пхп, то лучше просто хтмл, так как, как я понял, echo будет медленнее работать!

Для того, чтоб постоянно не делать ссылки: "../img" и т.д., при том, что это (возвращение на одну папку назад) ты используешь почти везде, задай атрибут <base> для страницы.

А вообще, если хочешь разобраться с этим, надо не целый код разбирать, а по шагам, сначала один элемент сделать и проверить как работает, после второй, после третий, а не весь готовый с массой проблем!


_____________
http://flibro.com/
Быстрый ответ:

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