|
|
|
| Добрый день!
После заполнения всех полей нажимется кнопка и данные обрабатываются и появляется сообщение "ОК". Перед обработкой необходимо проверить все ли поля заполнены и заполнены корректно.
Вот листинг. Мы еще ничего не ввели а он уже пишет что не все поля заполнена и некореектно введен адрес. И при этом сообщение ОК.
Подскажите где ошибся?
<?
Error_Reporting(E_ALL & ~E_NOTICE);
// Создать форму
$form = "
<form action=\"ascii.php\" method=\"post\">
<input type=\"hidden\" name=\"seenform\" value=\"y\">
<b>Give us some information!</b><br>
Your Name:<br>
<input type=\"text\" name=\"name\" size=\"20\" maxlength=\"20\" value=\"$name\"><br>
Your Email:<br>
<input type=\"text\" name=\"email\" s1ze=\"20\" maxlength=\"40\" value=\"$email\"><br>
<input type=\"submit\" value=\"subscribe!\">
</form>";
// Заполнялась ли форма ранее?
if ($seenform != "у"):
print "$form";
// Пользователь заполнил форму. Проверить введенные данные, else :
$error_flag = "n";
// Убедиться в том. что поле имени содержит информацию
if ($name == "") :
print "<font color=\"red\">Вы забыли указать ИМЯ!!</font> <br>";
$error_flag = "y";
endif;
// Убедиться в том. что поле адреса содержит информацию
if ($email == "") :
else :
print "<font color=\"red\">Вы забыли указать ИМЯ!</font> <br>";
$error_flag = "y";
// Преобразовать все алфавитные символы в адресе
// электронной почты к нижнему регистру
$email = strtolower(trim($email));
// Убедиться в правильности синтаксиса
// адреса электронной почты
if (! @eregi('^[0-9a-z]+'.'([0-9a-z-]+\.)+'.'([0-9a-z]){2.4}$'. $email)):
print "<font color=\"red\">Вы указали не корректный адрес!</font> <br>" ;
$error_flag = "y";
endif;
endif;
// Если флаг ошибки $error_flag установлен.
// заново отобразить форму
if ($error_flag == "у"):
print "$form";
else :
// Обработать данные пользователя
print "ОК!";
endif;
endif;
?> | |
|
|
|
|
|
|
|
для: nameivan
(29.04.2008 в 14:20)
| | Да все это ошибка. Начиная от $seenform и кончая последними строчками. register_globals=off, а значит не $email, например, а $_POST['email'], и т.д.. При проверке заполнения формы используйте "первый эшелон" - JS, РНР это второй. О проверке данных формы тут столько написано, что нет смысла повторять - сделайте поиск по разделу. | |
|
|
|
|
|
|
|
для: sim5
(29.04.2008 в 14:41)
| | >Да все это ошибка. Начиная от $seenform...
Начиная с отключения нотисов) | |
|
|
|
|
|
|
|
для: sim5
(29.04.2008 в 14:41)
| | Приведите пожалуйтса пример. Так будет понятнее. | |
|
|
|
|
|
|
|
для: nameIvan
(29.04.2008 в 14:49)
| |
//это форма
<form action="" method="post" id="as">
<input type="text" name="text">
<input name="send" type="submit" value="Send">
</form>
//а это как получить значение поля формы с именем текст при передаче методом POST
<?
if (isset($_POST['send'])) echo $_POST['text']; //а не echo $text
?>
|
PS. Да и вообще логика вывода формы не верна, при ошибках ее заполнения, уже введенные пользователем данные будут утеряны, а это плохо. | |
|
|
|
|
|
|
|
для: sim5
(29.04.2008 в 14:55)
| | спасибо | |
|
|
|