Собственно вопрос на сайте у меня 3 формы для ввода данных Аккаунт Пароль Мыло Код (Text): <?php //Конект к базе $link=mysql_connect($host, $user, $pass) or die(mysql_errno($link).mysql_error($link)); $db=mysql_select_db($db_name_login,$link) or die(mysql_errno($link).mysql_error($link)); //сохранение ячек ввода ели ввели что-то не правильно и нажали кнопку регистрация if ($_SERVER['QUERY_STRING']=='page=change_email' && @$_POST['account'] && strlen($_POST['account'])<=20 && $_POST['password'] && $_POST['email']) { if (!eregi("^[a-zA-Z0-9_]+$", $_POST['account'] )) //анти инекция die ("<p class=\"error\">" . $lang["error_error"] . $lang["account_not_alphanumeric"] . "</p>"); //проверка на соотвествие логина и ведёного пароля с тем что в базе $result=mysql_query("SELECT count(*) FROM accounts WHERE login='".$_POST['account']."' AND password='".base64_encode(pack('H*', sha1(utf8_encode($_POST['password']))))."'", $link) or die ('Error '.mysql_errno().': '.mysql_error()); if (mysql_result($result,0,0) == 1) { //Если условие прошло то он берёт переменые и прописывает новое мыло в базу. mysql_query("UPDATE accounts SET email='".$_POST['email']."' WHERE login='".$_POST['account']."'", $link) or die ('Error '.mysql_errno().': '.mysql_error()); print "<p style=\"font-weight:\">".$L2JBS_lang["accounts_email_ok"]."</p>"; } else print "<p class=\"error\">".$L2JBS_lang["accounts_missingloginorpassword"]."</p>"; } } ?> не мне нужно типа если ты вводишь логин пароль и новый e-mail то он проверяет сначало пароль, а если правильно то проверяет в базе по этому логину который чел вёл есть ли уже записанное мыло если тама null@null то разрешает сменить мыло а если нет то пишет. Для аккаунта ".$_POST['account']." адрес электронной почты уже зарегистрирован написал следующую вещь: Код (Text): $res=mysql_query("SELECT count(*) FROM accounts WHERE login='".$_POST['account']."' AND email='null@null'", $link) or die ('Error '.mysql_errno().': '.mysql_error()); print "<p class=\"error\">Для аккаунта ".$_POST['account']." адрес электронной почты уже зарегистрирован</p>"; if (mysql_result($res,0,0) == 1) { Тока не пойму куда вснуть условие...
PHP: <?php //Конект к базе $link=mysql_connect($host, $user, $pass) or die(mysql_errno($link).mysql_error($link)); // Не забудьте это убрать, когда оттестируете скрипт или заменить простым текстом $db=mysql_select_db($db_name_login,$link) or die(mysql_errno($link).mysql_error($link)); // То же самое. Убрать или заменить текстом, после тестирования. //сохранение ячек ввода ели ввели что-то не правильно и нажали кнопку регистрация if ($_GET['page']=='change_email' && @$_POST['account'] && strlen($_POST['account'])<=20 && $_POST['password'] && $_POST['email']) { if (!eregi("^[a-zA-Z0-9_]+$", $_POST['account'] )) //анти инекция die ("<p class=\"error\">" . $lang["error_error"] . $lang["account_not_alphanumeric"] . "</p>"); //проверка на соотвествие логина и ведёного пароля с тем что в базе $result=mysql_query("SELECT email FROM accounts WHERE login='".mysql_real_escape_string($_POST['account'])."' AND password='".base64_encode(pack('H*', sha1(utf8_encode(mysql_real_escape_string($_POST['password'])))))."' LIMIT 1", $link) or die ('Error '.mysql_errno().': '.mysql_error()); // Аналогично предыдущим. Удалить потом. if ($row = mysql_fetch_assoc($result)) { //Если условие прошло то он берёт переменые и прописывает новое мыло в базу. if ($row['email'] == "null@null") { mysql_query("UPDATE accounts SET email='".mysql_real_escape_string($_POST['email'])."' WHERE login='".mysql_real_escape_string($_POST['account'])."'", $link) or die ('Error '.mysql_errno().': '.mysql_error()); // Изменить после дебага print "<p style=\"font-weight:\">".$L2JBS_lang["accounts_email_ok"]."</p>"; } else { print "<p class=\"error\">Для аккаунта ".$_POST['account']." адрес электронной почты уже зарегистрирован</p>"; } } else print "<p class=\"error\">".$L2JBS_lang["accounts_missingloginorpassword"]."</p>"; } } ?>
При попытке изменить мыло где поле null@null выводит ошибку которая выше.... Для аккаунта test адрес электронной почты уже зарегистрирован
А у меня этот код отлично работает. Мыло меняет нормально. Только последнюю фигурную скобку нужно убрать, которая перед ?> стоит. Непонятно как она туда затесалась.