在PHP中对动态表单数据使用FILTER_SANITIZE_STRING

时间:2015-04-17 20:43:01

标签: php filter-var

我使用jquery库添加动态表单元素来提交数据(插入到MYSQL数据库中)。 JavaScript部分如下: -

<div>
 <form method="get" action="testb1.php">
<div id="itemRows">

Item quantity: <input type="text" name="qty[]" size="4" /> Item name: <input type="text" name="name[]" /> <input onclick="addRow(this.form);" type="button" value="Add row" />

</div>
<input type="submit" />
</form>

</div>
<script>

var rowNum = 0;
function addRow(frm) {
rowNum ++;
var row = '<p id="rowNum'+rowNum+'">Item quantity: <input type="text" name="qty[]" size="4" > Item name: <input type="text" name="name[]"> <input type="button" value="Remove" onclick="removeRow('+rowNum+');"></p>';
jQuery('#itemRows').append(row);
frm.add_qty.value = '';
frm.add_name.value = '';
}
function removeRow(rnum) {
jQuery('#rowNum'+rnum).remove();
}       
</script>

And the PHP part to test the submitted data:-
<?php


$no = count($_GET['qty']);
           for ($i=0; $i <$no ; $i++) { 
            echo $_GET['qty'][$i]."<br>";
            echo $_GET['name'][$i]."<br>";

            }
?>

这部分可以。提交的数据按预期显示。 但是,如果我想过滤提交的数据,如下所示我得到一个元素(第一个): -

$gcode = filter_var($_GET['qty'],FILTER_SANITIZE_STRING);
$no = count($gcode); 

似乎是阵列问题。 我怎样才能过滤提交的字符串。 我应该分别过滤每个$_GET['qty'][$i]吗?

1 个答案:

答案 0 :(得分:0)

如果要过滤数组的变量,则必须使用filter_var_array()

在你的情况下是这样的:

$gcode = filter_var_array($_GET['qty'],FILTER_SANITIZE_STRING);