Есть код PHP: <?php header('Content-type: text/html; charset=utf-8'); echo '<title>Востановление пароля</title>'; if (isset($_POST['email'])) { $email = $_POST ['email']; if (email == '') { unset($email); } } if (empty($email)) { exit ('Введите ваш email'); } if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email)) { die ("Неверно введен е-mail! <a href=\"javascript:history.back()\">Назад</a>"); } $email=addslashes($email); $your_email = "nick_owerland@mail.ru"; $title = "Востановление пароля"; include ("bd.php"); $result = mysql_query("SELECT * FROM user WHERE email='$email'",$db ); $myrow = mysql_fetch_array($result); if (empty($myrow['email'])) { exit ("Введёный вами email не верный!"); } else ( $msg = 'Вы подали заявку на востановление пароля! Ваш логин: '.$myrow['login'].'; Ваш пароль:'.$myrow['password'].';'; $send = mail($email, $title, $msg, Content-type: text/plain; charset=windows-1251 \r \nFrom:$your_email"); if ($send == 'true') { echo "Письмо отправлено"; } else { echo "Письмо не отправлено"; } } ?> пишет что ошибка в этом:"if (empty($email))", а точнее пишет что это синтаксическая ошибка.
На Parse error: syntax error, unexpected T_EMPTY, expecting '(' in V:\home\localhost\www\testlogin\smg.php on line 13
@Verico, строка 12, блок if. В этом условии ты проверяешь переменную email на пустоту. Но, на этом участке кода этой переменной может и не быть, потому что ты инициализируешь её в другом if только когда у тебя есть $_POST['email']. Если его не будет, то и переменной такой не будет. Проверка на пустоту подразумевает, что переменная уже инициализирована --- Добавлено --- но вообще я согласен с предыдущим оратором: е*ать
собственно поэтому я и расписал ошибку, а не послал в задницу, как одного тут (все мы конечно знаем, о ком я)
--- Добавлено --- PHP: if (empty($email)) Я не вижу синтаксических ошибок в этой строке. Возможно где-то затесался русский символ. Попробуй перенабрать строку.
Что касается кавычек то я вчера исправил,а от за строку 27 благодарочка) Но скрипт все-равно не работает, наверное новый напишу так будет будет лучше.
Короче там все работает, лови исправленный код и как всегда с ошибкой) PHP: <?php header('Content-type: text/html; charset=utf-8'); include "$settings_dir/bd.php"; $login = mysql_real_escape_string($_POST['login']); $email = mysql_real_escape_string($_POST['email']); $password = mysql_real_escape_string($_POST['password']); $query = "SELECT `login` FROM `user` WHERE `login`='{$login}' LIMIT 1"; $sql = mysql_query($query) or die(mysql_error()); if (mysql_num_rows($sql)==1) { $simvols = array("0","1","2","3","4","5","6","7","8","9", "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", "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"); for ($key = 0; $key <6; $key++) { shuffle($simvols); $string = $string.$simvols[1]; } $pass = md5(md5($string)); $query = "UPDATE 'password' SET 'password'='{$pass}' WHERE 'login'= '{$login}'"; $sql = mysql_query($query) or die (mysql_error()); $query = "SELECT 'email' FROM 'user' WHERE 'login' ='{$login}'"; $sql = mysql_query($query) or die (mysql_error()); $row = mysql_fetch_assoc($sql); $email = $row['email']; email ($email, "Вы подавали запрос на востановление пароля" , "Здравствуйте $login это ваш новый пароль : $string"); } ?> Ошибка: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
Я не так трохан объяснил. Даже если я делаю то что вы мне посоветовали, то все-равно такая же ошибка. Ничего не меняется.
До этого PHP ругался на первый запрос, во втором случае на второй. Значит помогает то, что я тебе говорю. Убери фигурные скобки везде. Если опять выдаст ошибку, то напиши. --- Добавлено --- И текст ошибки не забудь.
Я уже это попробовал, ошибка не много изменилась, вот она: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