Быстрая проверка полей формы в PHP - PullRequest
2 голосов
/ 18 июля 2011

Когда у меня есть поля под тегом form, я использую функцию isset(), например ниже:

if(isset($_POST) and isset($_POST['title']) and $_POST['date'])
{
   //something;
}

, и она становится больше, когда я проверяю больше полей.Я ищу любой простой способ проверить, все ли они заполнены или нет на стороне сервера с помощью PHP.

Может быть, что-то, что перемещается по всем полям и проверяет, заполнены ли они, как требуется.

Ответы [ 5 ]

4 голосов
/ 18 июля 2011
<?php

$fields = array('field1', 'field2', 'field3', ...etc...); //  Array of fields

$valid = true;  //Assume all fields are correct and set this to false if not

foreach($fields as $field) {
    if(!array_key_exits($field, $_POST)) { 
        $valid = false; // At least one key isn't set
        break;
    }
}

if($valid) {
    // All fields are good
} else {
    //Your user failed...
}
4 голосов
/ 18 июля 2011
// required fields
$fields = array('title', 'date', 'email');

// optionally ignore blank posted values
$_POST = array_filter(array_map('trim', $_POST), 'strlen');

if (count(array_intersect_key($_POST, array_flip($fields))) == count($fields))
{
    // all the required fields were posted
}

else
{
    // ...not
}
1 голос
/ 18 июля 2011

$_POST - это массив, так что вы можете выбрать его элемент, используя foreach, а затем проверить каждый элемент, если он пуст или нет, собирать ошибки, если там и в конце, отправить одно сообщение об ошибке.

0 голосов
/ 09 июня 2015

Более подходящим решением было бы написать небольшую функцию для проверки наличия списка ключей, например

function array_keys_exist($keys, $search) {
    // If we were passed a single key, use existing function
    if (!is_array($keys)) {
        return array_key_exists($keys, $search);
    }
    // If there are no keys in $search that are not in $keys
    // We have all the keys
    return 0 == count(array_diff($keys, array_keys($search)));
}

, которую затем можно использовать для всех ваших форм, например:

$requiredFields = array('title', 'date', 'details');
if (array_keys_exist($requiredFields, $_POST)) {
    // Do your thing
}

Честно говоря, я не уверен, почему это не встроенная функция

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

Я нашел его в разделе комментариев в руководстве по PHP ...

Небольшая функция, которая принимает массив в качестве ключей:

<?php
//note the s in the function name (keys)
function array_keys_exists($array,$keys) {
    foreach($keys as $k) {
        if(!isset($array[$k])) {
        return false;
        }
    }
    return true;
}
?>
//useful to validate a form for example
<form>
    <input type="text" name="field1" /><br />
    <input type="text" name="field2" /><br />
    <input type="text" name="field3" /><br />
    <input type="text" name="field4" /><br />
    <input type="text" name="field5" /><br />
</form>
<?php
if(!array_keys_exists($_POST,
array("field1","field2","field3","field4","field5")
)) {
    //some fields are missing, dont do anything (maybe hacking)
} else {
    //code ...
}
?>
...