Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Форма для тех кто забыл пароль

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Помогите с алгоритмами
vanicon
Отправлено: 06 Июня, 2010 - 15:41:32
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Есть форма для тех кто забыл пароль, при регистрации пользователь вводил вопрос и ответ на него, и все это записывалось в базу данных (вопрос - в поле vop, а ответ в поле key). И когда пользователь переходит на страницу http://test5.ru/?action=password, ему сначала нужно ввести свой логин и если он правильный, должна появится другая форма где пользователь сможет ввести ответ, а форма для ввода логина должна исчезнуть. И мне нужно как бы выводить две формы на одном URL, но по отдельности. Помогите пожалуйста.


-----
Так было, так есть и так будет
 
 Top
SAD
Отправлено: 06 Июня, 2010 - 15:48:19
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




PHP:
скопировать код в буфер обмена
  1. if(!isset($_POST['form_pass']) AND !isset($_POST['form_vop']))
  2.   {
  3.       // здесь показываешь форму с паролем
  4. }
  5.  
  6. elseif(isset($_POST['form_pass']) AND !isset($_POST['form_vop']))
  7. {
  8. // здесь показываешь форму с вопросом
  9. }
  10. else
  11. {
  12. // остальные действия
  13. }

(Отредактировано автором: 06 Июня, 2010 - 15:48:51)

 
 Top
vanicon
Отправлено: 06 Июня, 2010 - 18:06:01
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




SAD Твой код проверяет установлены ли переменные, но если логин не совпадет с логинами в БД. Я немного переделал код, но все равно не работает.
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. if(!isset($ok) AND !isset($_POST['log']))
  4. {?>
  5.  <div class="forma-vhoda">
  6. <h2 style="text-align:center;">Забыли пароль</h2>
  7. <form method="POST" action="http://test5.ru/?action=password">
  8. Имя пользователя: <input name="login" type="text"><br>
  9. <input type="submit" value="Далее" style="float:right;width:70px;margin:5px 70px 0 0;" name="lost">
  10. </form>
  11. <a href="http://test5.ru/?action=register">Регистрация</a>
  12. <br><a href="http://test5.ru/">Авторизация</a>
  13. </div>
  14.  
  15. <?php
  16. $sqlpass = mysql_query ("SELECT vop,key FROM users WHERE name = '".$_POST['login']."' AND online = 1");
  17. $lostpass = mysql_fetch_array($sqlpass);
  18. if($_POST['lost']){
  19. if($lostpass['question'] <> null){
  20. $ok =2;
  21. }
  22. else{
  23. echo'Такого логина не существует';
  24. }
  25. }
  26. }
  27. elseif(isset($ok) AND !isset($_POST['log']))
  28. {
  29. ?>
  30. <div class="forma-vhoda">
  31. Вопрос : <?php echo $lostpass['vop'];?><br>
  32. <form method="POST" action="http://test5.ru/?action=password">
  33. Имя пользователя: <input name="log" type="text"><br>
  34. <input type="submit" value="Получить пароль" style="float:right;width:70px;margin:5px 70px 0 0;" name="lost2">
  35. </form>
  36. </div>
  37. <?
  38. if($_POST['lost2']){
  39. if($_POST['log'] == $lostpass['key']){
  40.  
  41. echo'Отправляем письмо с паралем';
  42. }
  43. else{
  44. echo'Ответ не правильный';
  45. }
  46. }
  47. }
  48. ?>
  49.  
  50.  

(Добавление)
Кажется понял в чем проблема
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. if(!isset($ok) AND !isset($_POST['log']))
  4. {?>
  5.  <div class="forma-vhoda">
  6. <h2 style="text-align:center;">Забыли пароль</h2>
  7. <form method="POST" action="http://test5.ru/?action=password">
  8. Имя пользователя: <input name="login" type="text"><br>
  9. <input type="submit" value="Далее" style="float:right;width:70px;margin:5px 70px 0 0;" name="lost">
  10. </form>
  11. <a href="http://test5.ru/?action=register">Регистрация</a>
  12. <br><a href="http://test5.ru/">Авторизация</a>
  13. </div>
  14.  
  15. <?php
  16. $sqlpass = mysql_query ("SELECT vop,key FROM users WHERE name = '".$_POST['login']."' AND online = 1");
  17. $lostpass = mysql_fetch_array($sqlpass);
  18. if($_POST['lost']){
  19. if($lostpass['question'] <> null){
  20. $ok =2;
  21. }
  22. else{
  23. echo'Такого логина не существует';
  24. }
  25. }
  26. }
  27. elseif(isset($ok) AND !isset($_POST['log']))
  28. {
  29. ?>
  30. <div class="forma-vhoda">
  31. Вопрос : <?php echo $lostpass['vop'];?><br>
  32. <form method="POST" action="http://test5.ru/?action=password">
  33. Имя пользователя: <input name="log" type="text"><br>
  34. <input type="submit" value="Получить пароль" style="float:right;width:70px;margin:5px 70px 0 0;" name="lost2">
  35. <input name="lo" type="hidden" value="<?php echo $_POST['login'];?>">
  36. </form>
  37. </div>
  38. <?
  39. }
  40. else{
  41. $sqlpass = mysql_query ("SELECT vop,key FROM users WHERE name = '".$_POST['lo']."' AND online = 1");
  42. $lostpass = mysql_fetch_array($sqlpass);
  43. if($_POST['log'] == $lostpass['key']){
  44. echo'Отправляем письмо с паралем';
  45. }
  46. else{
  47. echo'Ответ не правильный';
  48. }
  49. }
  50. ?>
  51.  
  52.  
  53.  

Будут ли какие нибудь замечания или советы?
(Добавление)
И еще один вопрос по формам, когда я уже на второй форме и нажимаю на кнопку назад броузер пишет мне:
Подтвердите повторную отправку формы

Для правильного отображения этой страницы требуются введеные ранее данные. Вы можете отправить эти данные еще раз, однако при этом будет выполнен повтор всех выполненных ранее действий. Нажмите "Обновить", чтобы отправить данные повторно и отобразить страницу.
Можно ли избежать этого.


-----
Так было, так есть и так будет
 
 Top
JustUserR
Отправлено: 07 Июня, 2010 - 00:55:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




vanicon пишет:
И еще один вопрос по формам, когда я уже на второй форме и нажимаю на кнопку назад броузер пишет мне:
Подтвердите повторную отправку формы
Это стандартная ситуация в браузере которая возникает при попытке повторной отправки формы POST-методом с помощью обновления страницы или выбора соответствующей страницы из истории - как вариант можете заблокировать это с помощью JS-обработки события или использования динимических форм с передачей данных в Iframe/AJAX - в таком случае сами HTML-страницы будут статическими и сами смогут получать и передавать данные для повторого запроса


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB