Как пометить отсутствующее поле в PHP при перенаправлении обратно на страницу с отправленной формой? - PullRequest
0 голосов
/ 27 июля 2011

У меня есть форма в нижней части моего сайта, которая появляется на каждой странице. Мне нужно сделать так, чтобы, если пользователь отправлял форму с пустыми полями, он отмечал сообщение об ошибке в форме. В настоящее время он направляет их на другую страницу, где данные передаются на другой сервер. Я уже использую JavaScript для этого, но мне нужно добавить дополнительный проверочный слой с кодом на стороне сервера.

Я знаю, как определить, являются ли поля формы пустыми, но как я могу использовать серверный код для перенаправления обратно на ссылающуюся страницу и включить некоторые параметры, которые можно использовать в нижнем колонтитуле, чтобы определить, какие поля были пустыми? 1003 *

Я предполагаю, что мне придется использовать заголовок PHP () с http_referer, но как я могу передать параметры обратно на эту страницу, чтобы в URL ничего не отображалось?

Ответы [ 2 ]

3 голосов
/ 27 июля 2011

Внесите в $_SESSION запись о недействительных / пустых полях и пометьте их CSS в вашей форме:

session_start();

// When you begin validating your form, clear out any old fields from $_SESSION
$_SESSION['previous'] = array();
$_SESSION['invalid'] = array();

// when you encounter an empty or invalid field,
// add it to an array in $_SESSION
$_SESSION['invalid']['fieldname'] = TRUE;

// Store the previous POST value too
$_SESSION['previous']['fieldname'] = $_POST['fieldname'];

В вашей форме вы можете проверить наличие недопустимого поля и добавить класс CSS, чтобы указать недействительность. Это устанавливает класс invalid:

<input name='fieldname' type='text'
  class='<?php if (isset($_SESSION['invalid']['fieldname'])) echo "invalid";?>' 
  value='<?php if (isset($_SESSION['previous']['fieldname'])) echo htmlentities($_SESSION['previous']['fieldname'], ENT_QUOTES); ?>'
/>

Сделайте это для всех полей формы. Используйте этот же метод для сохранения предыдущих значений $_POST и вывода их в атрибут value поля.

0 голосов
/ 27 июля 2011

Не думаю, что нужно отправлять их на другую страницу.Как вы уже знаете, проверку данных легко выполнить с помощью Javascript и PHP.

  1. , вам следует проверить данные формы POST в верхней части файла.
  2. Проверить данные.Поместите ошибки в массив, чтобы вы могли отразить их в любое время.
  3. Проверьте, нашли ли вы какие-либо ошибки.

       // Loop through the $_POST array, which comes from the form...
    
    $errors = array();
        foreach($_POST AS $key => $value)
    
    {
    
    // first need to make sure this is an allowed field
        if(in_array($key, $allowedFields))
    {
        $$key = $value;
    
        // is this a required field?
        if(in_array($key, $requiredFields) && $value == '')
        {
            $errors[] = "The field $key is required.";
        }
    }
    

    }

  4. Если есть ошибки, заново отобразите страницу и перечислите ошибки, чтобы пользователи знали, что они сделали неправильно, и могли их исправить.Этот метод также позволяет повторно заполнить поля формы сохраненными значениями, чтобы в случае ошибки пользователю не приходилось вводить все заново.

...