PHP没有检测到空的POST变量

时间:2011-01-27 13:58:34

标签: php

我有以下数组

Array ( [productid] => 3
[newid] => 3
[name] => 
[description] => 
[price] => 
[onlinestock] => 
[weight] => 
[keywords] => 
[longdescription] => 
[graphic1] => 89.jpeg 
[graphic2] => 
[parameter1] => 
[parameter2] => 
[category1id] => 101 
[category2id] => 
[category3id] => 
[category4id] => 
[category5id] => 
[extra1] => 
[extra2] => 
[extra3] => 
[group1id] => 1575 
[groupprice1] => 0 
[group2id] => 1576 
[groupprice2] => 0 
[group3id] => 1577 
[groupprice3] => 0 
[group4id] => 1578 
[groupprice4] => 0 
[group5id] => 1579 
[groupprice5] => 0 

我正在执行以下操作来检查空值

 if (empty($_REQUEST["category1id"])){ 
                $_REQUEST["category1id"] = 0;
        }else if (empty($_REQUEST["category2id"])){
                $_REQUEST["category2id"] = 0;
        }else if (empty($_REQUEST["category3id"])){
                $_REQUEST["category3id"] = 0;
        }else if (empty($_REQUEST["category4id"])){
                $_REQUEST["category4id"] = 0;
        }else if (empty($_REQUEST["category5id"])){
                $_REQUEST["category5id"] = 0;
        }else if (empty($_REQUEST["price"])){
                $_REQUEST["price"] = 0;
        }else if (empty($_REQUEST["onlinestock"])){
                $_REQUEST["onlinestock"] = 0;
        }else if (empty($_REQUEST["weight"])){
                $_REQUEST["weight"] = 0;
        }

但不知怎的,它没有检测到任何这些值为空?我不知道这可能是什么我试过$ _REQUEST ['category1id'] ==“”这也没有用。任何帮助将不胜感激

4 个答案:

答案 0 :(得分:7)

你的逻辑是有缺陷的。使用else if时,只有条件才会匹配先前条件返回的位置false。摆脱每个else它应该有效。

答案 1 :(得分:4)

佩卡是100%正确的。但我认为改变你的方法会更容易。用这个循环替换整个if/else块:

foreach ($_POST as &$post) {
    $post = empty($post) ? 0 : $post;
}

答案 2 :(得分:2)

上面的好评,主要是不要使用$ _REQUEST:

$_REQUEST contains: $_COOKIE, $_GET, and $_POST variables

如果您使用$ _REQUEST,则无法保证数据来自POST,这会导致脚本出现安全漏洞。明确声明你想要的东西$ _POST / $ _ GET。

另请阅读empty() fn文档

同样查看isset() - (确定变量是否已设置且不为NULL):

答案 3 :(得分:0)

我想你可能想要了解那里发生的事情。对于你试图做的某些时候我曾经使用过isset。如果答案应该考虑其他。