Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: проверка заполнения полей формы
 
 автор: nameivan   (29.04.2008 в 14:20)   письмо автору
 
 

Добрый день!

После заполнения всех полей нажимется кнопка и данные обрабатываются и появляется сообщение "ОК". Перед обработкой необходимо проверить все ли поля заполнены и заполнены корректно.
Вот листинг. Мы еще ничего не ввели а он уже пишет что не все поля заполнена и некореектно введен адрес. И при этом сообщение ОК.
Подскажите где ошибся?

<?
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;
?>

   
 
 автор: sim5   (29.04.2008 в 14:41)   письмо автору
 
   для: nameivan   (29.04.2008 в 14:20)
 

Да все это ошибка. Начиная от $seenform и кончая последними строчками. register_globals=off, а значит не $email, например, а $_POST['email'], и т.д.. При проверке заполнения формы используйте "первый эшелон" - JS, РНР это второй. О проверке данных формы тут столько написано, что нет смысла повторять - сделайте поиск по разделу.

   
 
 автор: Киналь   (29.04.2008 в 14:44)   письмо автору
 
   для: sim5   (29.04.2008 в 14:41)
 

>Да все это ошибка. Начиная от $seenform...

Начиная с отключения нотисов)

   
 
 автор: nameIvan   (29.04.2008 в 14:49)   письмо автору
 
   для: sim5   (29.04.2008 в 14:41)
 

Приведите пожалуйтса пример. Так будет понятнее.

   
 
 автор: sim5   (29.04.2008 в 14:55)   письмо автору
 
   для: 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. Да и вообще логика вывода формы не верна, при ошибках ее заполнения, уже введенные пользователем данные будут утеряны, а это плохо.

   
 
 автор: nameIvan   (29.04.2008 в 14:58)   письмо автору
 
   для: sim5   (29.04.2008 в 14:55)
 

спасибо

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования