За последние 24 часа нас посетили 54090 программистов и 1721 робот. Сейчас ищут 907 программистов ...

Помогите с кодом для восстановлением пароля.

Тема в разделе "PHP для новичков", создана пользователем Verico, 15 апр 2017.

  1. Verico

    Verico Новичок

    С нами с:
    13 апр 2017
    Сообщения:
    39
    Симпатии:
    0
    Есть код
    PHP:
    1. <?php
    2. header('Content-type: text/html; charset=utf-8');
    3. echo '<title>Востановление пароля</title>';
    4. if (isset($_POST['email']))
    5. {
    6.     $email = $_POST ['email'];
    7.     if (email == '')
    8.     {
    9.         unset($email);
    10.     }
    11. }
    12. if (empty($email))
    13. {
    14.     exit ('Введите ваш email');
    15. }
    16. if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email)) { die ("Неверно введен е-mail! <a href=\"javascript:history.back()\">Назад</a>"); }
    17. $email=addslashes($email);
    18. $your_email = "nick_owerland@mail.ru";
    19. $title = "Востановление пароля";
    20. include ("bd.php");
    21. $result = mysql_query("SELECT * FROM user WHERE email='$email'",$db );
    22.      $myrow = mysql_fetch_array($result);
    23.      if (empty($myrow['email']))
    24.      {
    25.          exit ("Введёный вами email не верный!");
    26.      }
    27. else ( $msg = 'Вы подали заявку на востановление пароля! Ваш логин:
    28.    '.$myrow['login'].'; Ваш пароль:'.$myrow['password'].';';
    29.     $send = mail($email, $title, $msg, Content-type: text/plain; charset=windows-1251
    30.         \r \nFrom:$your_email");
    31. if ($send == 'true')  
    32. {
    33.    echo "Письмо  отправлено";
    34.  
    35. }
    36. else
    37. {
    38.     echo "Письмо не отправлено";
    39. }
    40. }
    41.  ?>


    пишет что ошибка в этом:"if (empty($email))", а точнее пишет что это синтаксическая ошибка.
     
  2. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Синтаксическую ошибку вижу в строке 7.
    Текст ошибки скинь полностью.
     
  3. Verico

    Verico Новичок

    С нами с:
    13 апр 2017
    Сообщения:
    39
    Симпатии:
    0
    На
    Parse error: syntax error, unexpected T_EMPTY, expecting '(' in V:\home\localhost\www\testlogin\smg.php on line 13
     
  4. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Ошибку в строке 7 исправил?
     
  5. Verico

    Verico Новичок

    С нами с:
    13 апр 2017
    Сообщения:
    39
    Симпатии:
    0
    Да
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
  7. Verico

    Verico Новичок

    С нами с:
    13 апр 2017
    Сообщения:
    39
    Симпатии:
    0
    Что уже такое?
     
  8. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    @Verico, строка 12, блок if. В этом условии ты проверяешь переменную email на пустоту. Но, на этом участке кода этой переменной может и не быть, потому что ты инициализируешь её в другом if только когда у тебя есть $_POST['email']. Если его не будет, то и переменной такой не будет. Проверка на пустоту подразумевает, что переменная уже инициализирована
    --- Добавлено ---
    но вообще я согласен с предыдущим оратором: е*ать
     
  9. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    какая ошибка была в строке 7?
    --- Добавлено ---
    все через это проходят)
     
  10. Verico

    Verico Новичок

    С нами с:
    13 апр 2017
    Сообщения:
    39
    Симпатии:
    0
    просто знак доллара не написал
     
  11. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    собственно поэтому я и расписал ошибку, а не послал в задницу, как одного тут (все мы конечно знаем, о ком я)
     
  12. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    --- Добавлено ---
    PHP:
    1. if (empty($email))
    Я не вижу синтаксических ошибок в этой строке. Возможно где-то затесался русский символ. Попробуй перенабрать строку.
     
    acho нравится это.
  13. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    @TeslaFeo, красиво ты меня сейчас, согласен
     
  14. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Ну прости )
     
  15. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    А, ЁПТА!
    --- Добавлено ---
    В шестой строке $email=$_POST ['email'];
    пробельчик убери
     
  16. Verico

    Verico Новичок

    С нами с:
    13 апр 2017
    Сообщения:
    39
    Симпатии:
    0
    Не помогло (
     
  17. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    В строке 27 вместо '(' - '{'
    В строке 29 перед словом Content открой двойные кавычки ( " )
     
  18. Verico

    Verico Новичок

    С нами с:
    13 апр 2017
    Сообщения:
    39
    Симпатии:
    0
    Что касается кавычек то я вчера исправил,а от за строку 27 благодарочка)
    Но скрипт все-равно не работает, наверное новый напишу так будет будет лучше.
     
  19. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    исправь на:
    PHP:
    1. WHERE login='$login'
     
  20. Verico

    Verico Новичок

    С нами с:
    13 апр 2017
    Сообщения:
    39
    Симпатии:
    0
    Короче там все работает, лови исправленный код и как всегда с ошибкой)
    PHP:
    1. <?php
    2. header('Content-type: text/html; charset=utf-8');
    3.     include "$settings_dir/bd.php";
    4. $login = mysql_real_escape_string($_POST['login']);
    5. $email = mysql_real_escape_string($_POST['email']);
    6. $password = mysql_real_escape_string($_POST['password']);
    7. $query = "SELECT `login`
    8. FROM `user`
    9. WHERE `login`='{$login}'
    10. LIMIT 1";
    11.      $sql = mysql_query($query) or die(mysql_error());
    12.  
    13.     if (mysql_num_rows($sql)==1)
    14.     {
    15.         $simvols = array("0","1","2","3","4","5","6","7","8","9",
    16.                         "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
    17.                         "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
    18.         for ($key = 0; $key <6; $key++)
    19.         {
    20.             shuffle($simvols);
    21.             $string = $string.$simvols[1];
    22.         }
    23. $pass = md5(md5($string));
    24.  
    25. $query = "UPDATE 'password'
    26. SET 'password'='{$pass}'
    27. WHERE 'login'= '{$login}'";
    28.     $sql = mysql_query($query) or die (mysql_error());
    29.  
    30.  
    31.  
    32. $query = "SELECT 'email'
    33. FROM 'user'
    34. WHERE 'login' ='{$login}'";
    35.     $sql = mysql_query($query) or die (mysql_error());
    36.  
    37. $row = mysql_fetch_assoc($sql);
    38. $email = $row['email'];
    39.  
    40. email ($email, "Вы подавали запрос на востановление пароля" , "Здравствуйте $login это  ваш новый пароль : $string");
    41.  
    42.     }
    43.  
    44. ?>

    Ошибка:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''password' SET 'password'='1a5a459e31d904903175048c604c40cf' WHERE 'login'= 'V' at line 1
     
  21. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    где же он исправленный? убери фигурные скобки.
     
  22. Verico

    Verico Новичок

    С нами с:
    13 апр 2017
    Сообщения:
    39
    Симпатии:
    0
    Я не так трохан объяснил. Даже если я делаю то что вы мне посоветовали, то все-равно такая же ошибка. Ничего не меняется.
     
  23. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    До этого PHP ругался на первый запрос, во втором случае на второй. Значит помогает то, что я тебе говорю.
    Убери фигурные скобки везде.
    Если опять выдаст ошибку, то напиши.
    --- Добавлено ---
    И текст ошибки не забудь.
     
  24. Verico

    Verico Новичок

    С нами с:
    13 апр 2017
    Сообщения:
    39
    Симпатии:
    0
    Я уже это попробовал, ошибка не много изменилась, вот она:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''password' SET 'password'='' WHERE 'login'= 'Verico'' at line 1
     
  25. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    так там тоже надо было убрать фигруные скобки. я же говорю тебе - убери их везде.