if语句的快捷方式(检查是否有多少帖子)

时间:2013-04-29 14:45:12

标签: php

我有大量的帖子需要检查,如果已经设置的话。

        if 
        (
            isset($_POST['id']) && isset($_POST['type']) && isset($_POST['typeid']) && isset($_POST['name']) 
            && isset($_POST['level']) && isset($_POST['thumbnail']) && isset($_POST['def']) && isset($_POST['resist']) 
            && isset($_POST['health']) && isset($_POST['mana']) && isset($_POST['stamia']) && isset($_POST['str']) 
            && isset($_POST['dex']) && isset($_POST['rec']) && isset($_POST['int']) && isset($_POST['wis']) && isset($_POST['luc']) 
            && isset($_POST['information']) && isset($_POST['gold']) && isset($_POST['tradeable']) && isset($_POST['faction'])
            && isset($_POST['category'])
        )
        {

我试过这样做:

if (isset($_POST)) {

但后来我忘了填写一些字段,并没有抛出任何错误并进行处理。

我的问题:

如何检查所有这些帖子是否设置没有乱?有什么更短的方法吗? 感谢。

5 个答案:

答案 0 :(得分:5)

$requiredFields = array('id', 'type', ...);
if (array_diff_key(array_flip($requiredFields), $_POST)) {
    die('Not all fields were posted');
}
if (count(array_filter($_POST)) != count($_POST)) {
    die('Some fields were empty');
}

答案 1 :(得分:1)

你不需要那个。表格值默认设置,保存为复选框 所以,大多数时候你根本不需要这种检查。

此外,以这种方式检查值是错误的。

PHP [正确配置]足以捕获缺少的字段。它会告诉您在表单中错过或拼写错误的字段。虽然您当前的方法不会让您知道哪个特定字段是错误的。

因此,不要编写无用的代码 - 只需让PHP处理这个案例。

你想检查一些值是否由空字符串(或空格)组成 - 这是另一回事。你可以使用某种循环。像

if (count(array_filter($_POST,'trim')) != count($_POST))

答案 2 :(得分:0)

创建一个数组以保留所有字段:

$fields = array('id', 'type', 'typeid');

循环遍历此数组:

foreach ($fields as $field) {
    if (! isset($_POST[$field])) {
        // here you have some missed data
    }
}

答案 3 :(得分:-1)

使用类似的东西:

将所有帖子密钥放在一个数组中,并在for语句中检查所有密钥是否已设置:

function checkPost()
{
for ($i = 0 ; $i < count($array) ; $i++)
{
   if (!isset($_POST[$array[$i]])
     return false;
}
return true;
}

答案 4 :(得分:-2)

您可以使用foreach循环,如下所示。使用计数功能进行测试。您还需要测试跨站点脚本和sql注入,所以请记住验证帖子值

foreach ($_POST as $key => $value ) {
    if($value == '') {
       $errors[] = 1; //adds a value to the errors array if value is not populated
    }
}

//check if the errors array is populated.
if( count($errors) > 0 ) {
    // don't submit
} else {
    //submit
}