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
Форумы портала PHP.SU :: Версия для печати :: Форма для тех кто забыл пароль
Форумы портала PHP.SU » PHP » Программирование на PHP » Форма для тех кто забыл пароль

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

1. vanicon - 06 Июня, 2010 - 15:41:32 - перейти к сообщению
Есть форма для тех кто забыл пароль, при регистрации пользователь вводил вопрос и ответ на него, и все это записывалось в базу данных (вопрос - в поле vop, а ответ в поле key). И когда пользователь переходит на страницу http://test5.ru/?action=password, ему сначала нужно ввести свой логин и если он правильный, должна появится другая форма где пользователь сможет ввести ответ, а форма для ввода логина должна исчезнуть. И мне нужно как бы выводить две формы на одном URL, но по отдельности. Помогите пожалуйста.
2. SAD - 06 Июня, 2010 - 15:48:19 - перейти к сообщению
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. }
3. vanicon - 06 Июня, 2010 - 18:06:01 - перейти к сообщению
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.  

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

Для правильного отображения этой страницы требуются введеные ранее данные. Вы можете отправить эти данные еще раз, однако при этом будет выполнен повтор всех выполненных ранее действий. Нажмите "Обновить", чтобы отправить данные повторно и отобразить страницу.
Можно ли избежать этого.
4. JustUserR - 07 Июня, 2010 - 00:55:03 - перейти к сообщению
vanicon пишет:
И еще один вопрос по формам, когда я уже на второй форме и нажимаю на кнопку назад броузер пишет мне:
Подтвердите повторную отправку формы
Это стандартная ситуация в браузере которая возникает при попытке повторной отправки формы POST-методом с помощью обновления страницы или выбора соответствующей страницы из истории - как вариант можете заблокировать это с помощью JS-обработки события или использования динимических форм с передачей данных в Iframe/AJAX - в таком случае сами HTML-страницы будут статическими и сами смогут получать и передавать данные для повторого запроса

 

Powered by ExBB FM 1.0 RC1