Php 为什么我不能使用filter\u输入从$\u get工作正常的表单获取信息
为了将复选框状态信息存储到一个数组中,我在表单中使用get方法 我尝试使用filter\u输入行按顺序从每个复选框中获取信息并将其存储到数组中,当替换为$\u get时,一切正常,但为了安全起见,我被告知不要使用$\u getPhp 为什么我不能使用filter\u输入从$\u get工作正常的表单获取信息,php,html,arrays,filter,get,Php,Html,Arrays,Filter,Get,为了将复选框状态信息存储到一个数组中,我在表单中使用get方法 我尝试使用filter\u输入行按顺序从每个复选框中获取信息并将其存储到数组中,当替换为$\u get时,一切正常,但为了安全起见,我被告知不要使用$\u get <form action="" method="get"> <input type="checkbox" name="1">Show Name<br> <input type="checkbox" name="2">Show
<form action="" method="get">
<input type="checkbox" name="1">Show Name<br>
<input type="checkbox" name="2">Show Category<br>
<input type="checkbox" name="3">Show Type<br>
<input type="submit" value="Submit">
</form>
<?php
$formArray = array();
$x = 1;
while ($x < 4) {
if (isset($_GET[$x])) {
$formArray[$x] = filter_input(INPUT_GET, "$x", FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH)
}
else {
$formArray[$x] = "off";
}
$x = $x + 1;
}
?>
显示名称
显示类别
显示类型
然后,数组应该存储“开”或“关”的值,但它只是留空,正如我在替换为“
$formArray[$x]=$\u GET[“$x”];
”时所提到的,程序100%正确运行您误用了过滤器输入
滤波器输入的核心实现如下:
$b = isset($_GET['b']) && is_string($_GET['b']) ? $_GET['b'] : '';
元素的名称是一个整数。所以,如果name不是字符串,filter_输入将返回false;如果name未设置,则返回null
我已经修改了你的代码片段使其生效
<form action="" method="get">
<input type="checkbox" name="t1">Show Name<br>
<input type="checkbox" name="t2">Show Category<br>
<input type="checkbox" name="t3">Show Type<br>
<input type="submit" value="Submit">
</form>
<?php
if (isset($_GET)) {
$formArray = [];
$x = 1;
while ($x < 4) {
if (isset($_GET['t' . $x])) {
$formArray[$x] = filter_input(INPUT_GET, 't' . $x, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
} else {
$formArray[$x] = "off";
}
$x = $x + 1;
}
echo "<pre>";
print_r($formArray);
die;
}
?>
您正在使用的过滤器标志用于所携带的数据元素
根据。isset()的参数必须是一个变量。只需使用
if(filter\u input(…)
感谢您创建了一个新的变量。这看起来像filter\u input
中的一个bug。对我来说,如果变量名是一个数字,为什么它会返回NULL???Rasmus可能会回答这个问题:D.谁是Rasmus?
Array
(
[1] => off
[2] => on
[3] => off
)