[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: пост и Проверка на пустые поля
Rachel
привет всем, покажите плиз пример кода или схему, Объясните мне логику как правильно надо обрабатывать форму, чтобы
При заходе на страницу выводится форма для заполнения.
после того, как человек заполнит форму и нажмет кнопку Послать,проверяются все поля, и если все ОК данные отсылаются на стр act.php , где выводятся переменные с формы.
если человек не заполнил поле, то вывести сообщение возле поля и не отправлять переменные на стр act.php пока все данные не будут введены правильно.а сама форма заполнена тем, что вводил пользователь.
Дальше, чтобы избежать повторной посылки данных, заставить браузер запросить страницу, но уже без посылки данных формы.


хоть на пальцах объясните!



Спустя 1 час, 44 минуты, 51 секунда (19.05.2008 - 17:28) LoneCat написал(а):
Код
<?php

if(isset($_POST['var1'])
&& isset($_POST['var2'])
&& isset($_POST['var3'])) {
  // Методом пост были присланы все поля формы

  // Массив ошибок
  $errors = array();

  // Проверки переменных
  if(empty($_POST['var1'])) { $errors['var1'] = "Не заполнена переменная 1"; }
  if(empty($_POST['var2'])) { $errors['var2'] = "Не заполнена переменная 2"; }
  if(empty($_POST['var3'])) { $errors['var3'] = "Не заполнена переменная 3"; }
  
  if(count($errors)) {
    // Если массив ошибок не пуст, заново выводим форму, отсылая в нее сообщения об ошибках
    showform($errors);
  } else {
    // Если массив ошибок пуст - значит все переменные подходят под условия, и можно производить соот-щие действия с ними
    file_put_contents('data.txt', $_POST['var1'].$_POST['var2'].$_POST['var3']);
    /*****
     * После выполнения всех необходимых действий с данными - переадресация
     * на результирующую страницу (моментально, через http-заголовок, или-же
     * отображением промежуточной страницы "данные добавлены" с мета-тегом
     * переадресации), чтобы при обновлении страницы данные не были отправлены
     * повторно.
     *****/
    header('Location: act.php');
  }
} else {
  showform();
}

// Содержит отображение формы
function showform(array $errors = array()) {
  // Генерация значений по умолчанию, если значение установлено с предыдущего запроса - присваивается оно, иначе NULL
  $var1 = isset($_POST['var1'])?$_POST['var1']:NULL;
  $var2 = isset($_POST['var2'])?$_POST['var2']:NULL;
  $var3 = isset($_POST['var3'])?$_POST['var3']:NULL;
  
  // Генерация сообщений об ошибках
  $err1 = isset($errors['var1'])?$errors['var1']:NULL;
  $err2 = isset($errors['var2'])?$errors['var2']:NULL;
  $err3 = isset($errors['var3'])?$errors['var3']:NULL;
  
  // Вывод формы
  echo '<form action="'.$_SERVER['REQUEST_URI'].'" method="post">'
      .'<input name="var1" type="text" value="'.$var1.'" />'.$err1.'<br />'
      .'<input name="var2" type="text" value="'.$var2.'" />'.$err2.'<br />'
      .'<input name="var3" type="text" value="'.$var3.'" />'.$err3.'<br />'
      .'<input type="submit" />'
      .'</form>';
}

?>

Спустя 1 день, 21 час, 17 минут, 19 секунд (21.05.2008 - 14:45) Rachel написал(а):
Спасибо, а что есть act.php ?

Спустя 54 секунды (21.05.2008 - 14:46) LoneCat написал(а):
Страница, на которую переадресуется пользователь после выполнения действий.

Спустя 11 минут, 26 секунд (21.05.2008 - 14:57) Rachel написал(а):
ясно, а что озн $_SERVER['REQUEST_URI']

Спустя 3 часа, 1 минута, 19 секунд (21.05.2008 - 17:59) LoneCat написал(а):
Текущую страницу скрипта, это предустановленная переменная


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.