由于某些原因,我的复选框数组值不会显示在$ _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
)
?>
我很高兴我至少可以在这里获取复选框数据,但我只留下一个问题:
跆拳道吗
答案 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']活着!