Заполните поля формы с php - PullRequest
2 голосов
/ 26 августа 2011

Учитывая следующий пример кода, что мне нужно добавить в функцию check_input, чтобы она работала с пропущенными / обязательными полями формы.По сути, все, что я пытаюсь сделать, это показать конечному пользователю сообщение об ошибке в верхней части моей формы, которое говорит что-то вроде «Поля, отмеченные *, обязательны для заполнения», если они пытаются отправить форму без заполнения всех обязательных полей..

Любая помощь будет принята с благодарностью и заранее благодарю за ваше время.

 // Don't post the form until the submit button is pressed.
if(isset($_POST['submit'])) {

  echo( 
   check_input($_POST['name']) . <br> .
   check_input($_POST['city']);

}

// check_input function
function check_input($data)
{
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data, ENT_QUOTES);
  return $data;
}

Форма

<form action="test.php" method="post">
  <input type="text" name="name">
  <input type="text" name="city">
  <input type="submit" name="submit" value="submit">
</form>

1 Ответ

4 голосов
/ 26 августа 2011
<?php
// Don't post the form until the submit button is pressed.
$requiredFields = array('name', 'city');    // Add the 'name' for all required fields to this array
$errors = false;
if(isset($_POST['submit'])) 
{
    // Clean all inputs
    array_walk($_POST, 'check_input');

    // Loop over requiredFields and output error if any are empty
    foreach($requiredFields as $r) {
        if( strlen($_POST[$r]) == 0 ) {
            $errors = true;
            break;
        }
    }

    // Error/success check
    if( $errors == true ) {
        echo 'Fields marked with a * are required';
    }else{
        // no errors
        // ...
    }
}

// check_input function
function check_input(&$data)
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data, ENT_QUOTES);
    return $data;
}
?>

PS: я заметил несоответствие цитаты в вашей форме HTML. Метод должен читать method="post", а не method="post'.

...