$query = "INSERT INTO account (username, email, password, IP) VALUES (\'$username\', \'$email\', \'$password\', \'$REMOTE_ADDR\')"; $result = mysql_query($query) or die("
error
"); $check=MySQL_Query("SELECT * FROM account WHERE username=\'$username\'"); if (MySQL_Num_Rows($check) !== 0) { $error5=\'Такой пользователь уже зарегистрирован! \'; } else { $error5=""; } //if (MySQL_Num_Rows($check) == 0) { echo \'takogo juzera eshjo net\'; }
$save_done=\'Спасибо, Ваши данные записаны. \'; }
}
?>
Название: Что-то не то получается.
Отправлено: semya от 31 Января 2003, 10:01:19
страно, ты сначала записываешь нового пользователя, а потом проверяешь его на существование???
Название: Что-то не то получается.
Отправлено: Меняздесьдавнонет от 31 Января 2003, 12:49:32
Вот тебе правильный код Пользуйся им. Если PHP меньше версии 4.1, то надо другие имена переменных. if (isset($_POST[\'submit\']) { foreach($_POST as $key => $value) { if (!get_magic_quotes_gpc()) $_POST[$key]=addslashes($_POST[$key]); $$key=$_POST[$key]=trim(strip_tags($_POST[$key])); } include("server.php"); $error=\'\'; if (empty($username)) $error=\'Не введён логин \'; if (empty($email)) $error.=\'Не введён e-mail \'; if (empty($password)) $error.=\'Не введён пароль! \'; $check=MySQL_Query("SELECT * FROM account WHERE username=\'$username\'") or die(mysql_error()); if (MySQL_Num_Rows($check) !== 0) $error.=\'Такой пользователь уже зарегистрирован! \';
if (!$error) { $query = "INSERT INTO account (username, email, password, IP) VALUES (\'$username\', \'$email\', \'$password\', \'".$_SERVER[\'REMOTE_ADDR\']."\')"; mysql_query($query) or die(mysql_error()); Header("Location: $PHP_SELF"); //Ну, или на страничку со спасибом. exit; } } include \'design_top.php\'; if ($error) { echo $error; foreach($_POST as $key => $value) $$key=$_POST[$key]=stripslashes(htmlspecialchars($_POST[$key],ENT_QUOTES)); } ?>
include \'design_bottom.php\'; ?> В этом коде, кроме упрощения, есть еще очень много важных вещей, вообще упущеных тобой. применять можно не только для этой, но и для любых других форм.
Название: Что-то не то получается.
Отправлено: myname от 31 Января 2003, 15:37:33
RomikChef Не работает твоя форма, понятия не имею почему. 1) не выводит незаполненные поля 2) не проходит проверку на уже существующий логин а мне это обязательно надо. Привожу пример полностью всей формы:
if (isset($_POST[\'post\'])) { foreach($_POST as $key => $value) { if (!get_magic_quotes_gpc()) $_POST[$key]=addslashes($_POST[$key]); $$key=$_POST[$key]=trim(strip_tags($_POST[$key])); } include("server_divx.php"); $error=\'\'; if (empty($username)) $error=\'не введён логин \'; if (empty($email)) $error.=\'не введён e-mail \'; if (empty($password)) $error.=\'не введён пароль! \'; $check=MySQL_Query("SELECT * FROM account WHERE username=\'$username\'") or die(mysql_error()); if (MySQL_Num_Rows($check) !== 0) $error.=\'есть такой пользователь! \';
if (!$error) { $query = "INSERT INTO account (username, email, password, IP) VALUES (\'$username\', \'$email\', \'$password\', \'".$_SERVER[\'REMOTE_ADDR\']."\')"; mysql_query($query) or die(mysql_error()); Header("Location: $PHP_SELF"); //Ну, или на страничку со спасибом. exit; } } if ($error) { echo $error; foreach($_POST as $key => $value) $$key=$_POST[$key]=stripslashes(htmlspecialchars($_POST[$key],ENT_QUOTES)); } ?>
n/a
Название: Что-то не то получается.
Отправлено: Меняздесьдавнонет от 31 Января 2003, 16:55:11
Естественно, оно не работает. 1. Зачем тебе лишняя переменная ?post=yes\'; , да еще и гетом? У тебя есть сабмит. Ему надо поставить имя - submit и проверять его.
2. Вывод ошибки у тебя происходит ДО начала хтмл. Вставь его куда надо.
3. value надо ПИСАТЬ. Не "", а значение поля.
Я же все это написал.
Название: Что-то не то получается.
Отправлено: nagash от 03 Февраля 2003, 02:25:27
(http://nagash.org/smiles/others/pray.gif)
Название: Что-то не то получается.
Отправлено: nagash от 03 Февраля 2003, 02:32:30
Цитировать
1. Зачем тебе лишняя переменная ?post=yes\'; , да еще и гетом? У тебя есть сабмит. Ему надо поставить имя - submit и проверять его.
типа не на милиметр нельзя отойти от твоего скрипта?
2 myname пиши if (isset($_GET[\'post\'])) {
Цитировать
3. value надо ПИСАТЬ. Не "", а значение поля.
вот никак не пойму а что это значит? =)
Название: Что-то не то получается.
Отправлено: myname от 03 Февраля 2003, 03:00:26
RomikChef Всё равно ничего не работает. Всё сделал в точности как у тебя, но не проходит скрипт проверку и всё тут! Если в форме не ввести данные, то выдаёт в ИЕ такого вида строку ?username=&email=&password=&submit=%CE%F2%EF%F0%E0%E2%E8%F2%FC, а если что-то ввести то выдаёт то же самое, только к строкам добавляет введённые данные: ?username=sss&email=sss&password=sss&submit=%CE%F2%EF%F0%E0%E2%E8%F2%FC
Вот форма ещё раз, выдели плиз цветом или жирным то, где в это ошибки и как их изменить. Спасибо заранее.
if (isset($_POST[\'submit\'])) { foreach($_POST as $key => $value) { if (!get_magic_quotes_gpc()) $_POST[$key]=addslashes($_POST[$key]); $$key=$_POST[$key]=trim(strip_tags($_POST[$key])); } include("server_divx.php"); $error=\'\'; if (empty($username)) $error=\'Не введён логин \'; if (empty($email)) $error.=\'Не введён e-mail \'; if (empty($password)) $error.=\'Не введён пароль! \'; $check=MySQL_Query("SELECT * FROM account WHERE username=\'$username\'") or die(mysql_error()); if (MySQL_Num_Rows($check) !== 0) $error.=\'Такой пользователь уже зарегистрирован! \';
if (!$error) { $query = "INSERT INTO account (username, email, password, IP) VALUES (\'$username\', \'$email\', \'$password\', \'".$_SERVER[\'REMOTE_ADDR\']."\')"; mysql_query($query) or die(mysql_error()); Header("Location: $PHP_SELF"); //Ну, или на страничку со спасибом. exit; } } include \'index_files/html_menu.php\'; if ($error) { echo $error; foreach($_POST as $key => $value) $$key=$_POST[$key]=stripslashes(htmlspecialchars($_POST[$key],ENT_QUOTES)); } ?>