复选框数组值$ _REQUEST但不是$ _POST

时间:2010-08-12 13:55:19

标签: php post webforms checkbox request

由于某些原因,我的复选框数组值不会显示在$ _POST中。

例如:

<form method="post" action="">
    <input type="checkbox" name="cb[]" value="1">
    <input type="checkbox" name="cb[]" checked="checked" value="2">
    <input type="checkbox" name="cb[]" value="3">
    <input type="checkbox" name="cb[]" checked="checked" value="4">
    <input type="checkbox" name="cb[]" checked="checked" value="5">
    <input type="checkbox" name="cb[]" value="6">
    ...
    <input type="checkbox" name="cb[]" checked="checked" value="26">
    <input type="checkbox" name="cb[]" value="27">
    <input type="submit" value="insanitizer"/>
</form>

提交时:

<?php
print_r($_POST); //Because print_r($_POST['cb']); gives ''

Array (
   [category] =>
)

print_r($_REQUEST['cb']);  //Showing the correct array name was used

Array
(
    [0] => 2
    [1] => 4
    [2] => 5
    [3] => 26
)
?>

我很高兴我至少可以在这里获取复选框数据,但我只留下一个问题:

跆拳道吗

1 个答案:

答案 0 :(得分:1)

杜尔杜尔......

作为一般初始化的一部分,我通过:

运行$ _POST和$ _GET
<?php
if(sizeof($_POST) > 0){
    foreach($_POST as $key => $value){
        $_POST[$key] = $this->_db->realEscapeString($value);
    }
}
if(sizeof($_GET) > 0){
    foreach($_GET as $key => $value){
        $_GET[$key] = $this->_db->realEscapeString($value);
    }
} 
?>

这似乎可以破坏任何阵列...

替换为:

<?php
...
if(sizeof($_GET) > 0){
        $this->initDbCleanArray($_GET);
    }
}
...

private function initDbCleanArray($a)
{
    if(sizeof($a) > 0){
        foreach($a as $key => $value){
            if(is_array($a[$key])){
                $this->initDbCleanArray($a[$key]);
            }
            else{
                $a[$key] = $this->_db->realEscapeString($value);
            }
        }
    }
}
?>

realEscapeString = mysql_real_escape_string

...和$ _POST ['cb']活着!