На моем веб-сайте у меня много форм и полей, у меня есть система, которая отлично работает, но очень болезненна и встает и работает.Создание идеальной формы с подтверждением
Это то, что моя система делает, как только вы отправляете форму, вся информация отправляется классу, который обладает всеми данными и проверяет его. Он также сохраняет значение этого поля $_SESSION['userUpdate']['firstName'][1] = $firstName;
Если есть ошибка, он создает переменную сеанса, такую как $_SESSION['userUpdate']['firstName'][0] = 1;
, 1 сообщает, что поле было пустым. Если нет ошибки, переменная сеанса будет равна 0.
Если ошибок, обнаруженных в процессе проверки, не отправлены в базу данных.
После этого страница форма перезагружается:
header('HTTP/1.1 303 See Other');
header('Location: '.curPageURL().'');
я использую это так, что вы не можете переслать данные при перезагрузке страницы. Именно по этой причине я использую все эти переменные сеанса.
Затем с большим количеством/else if/else я проверяю значения переменных сеанса и ошибки вывода, а также заполняю форму данными, введенными ранее.
Позвольте мне показать вам пример для поля firstname.
Это HTML код:
<label for="firstName" class="block">First Name</label>
<span>Your first name goes here.</span><?php echo $text_first_name ?>
<input type="text" id="firstName" class="mediaText" name="firstName" value="<?php echo $first_name2; ?>" onchange="needToConfirm=true" <?php echo $style_first_name ?> />
Это процесс проверки классом:
$_SESSION['ui']['first_name'][1] = $this->first_name;
if (isset($this->first_name))
{
if($this->first_name == NULL)
{
$_SESSION['ui']['first_name'][0] = 1;
}
else if(minRange(3, $this->first_name))
{
$_SESSION['ui']['first_name'][0] = 2;
}
else
{
array_push($set, "FirstName = '".$db->sql_escape($this->first_name)."'");
}
}
Это код PHP, который обрабатывает возможные ошибки:
$error_bg = "style=\"background:#EE5C42\"";
//FIRST NAME
if($_SESSION['ui']['first_name'][0] == 1)
{
$style_first_name = $error_bg;
$first_name2 = $_SESSION['ui']['first_name'][1];
}
else if($_SESSION['ui']['first_name'][0] == 2)
{
$style_first_name = $error_bg;
$first_name2 = $_SESSION['ui']['first_name'][1];
$text_first_name = "<span class=\"errorText\">Your first name must consist of at least 3 characters.</span>";
}
else
{
$first_name2 = $userdetails["FirstName"];
}
В конце страницы есть небольшая функция для отмены переменных сеанса.
Мне интересно, есть ли способ сделать это проще и легче вставать и работать?
"* perfect form *"? – Lion
Возможно, не правильный термометр, который я выбрал там. Может быть, «хорошая форма» более уместна. –
Ваш вопрос не подходит для так, так как так не оценил вопрос, который касается «что лучше» или «идеально» –