我一直在努力尝试编写一个函数来获取任何给定表单提交的POST值,将它们弹出到数组中,使用trim循环遍历数组,addslashes等将该值传递回变量所在的位置然后可以传递到数据库。
现在我遇到的障碍是在表单提交时将所有输入,textarea,选择元素数据放入数组中。代码我已经跟随
$fields = array($_POST['1'], $_POST['2']);
$i = 0;
foreach ($fields as $field) {
$i++;
${'field'.$i } = trim(addslashes(strip_tags($field)));
echo "POST field info #". $i ." - ". ${'field'.$i }."<br />";
}
正如你所看到的,一切都很好,因为POST值名称仍然是静态输入的,我需要的是一种将POST数据输入循环的方法,该循环使用增量变量动态调用POST名称然后将所有数据弹出到同一个数组中。我试过的代码如下。
for ($ii=0;$ii++;) {
foreach($_POST['$ii'] as $field) {
$fields = array($field);
}
}
$i = 0;
foreach ($fields as $field) {
$i++;
${'field'.$i } = trim(addslashes(strip_tags($field)));
echo "POST field info #". $i ." - ". ${'field'.$i }."<br />";
}
现在我知道这不起作用,但我能感觉到我相对接近,所以我想知道是否有任何聪明的人可以帮我排序最后一部分?我很遗憾,我现在要睡觉,并且不会在这篇文章中看到至少9个小时,道歉。
提前致谢。
丹
答案 0 :(得分:2)
$arrayOfPostValues = $_POST; // it already is an array
$arrayOfPostValues = array_map('strip_tags', $arrayOfPostValues);
$arrayOfPostValues = array_map('trim', $arrayOfPostValues);
或者,如果你真的,真的想要使用循环:
foreach ($arrayOfPostValues as &$value) {
$value = trim(striptags($value));
}
我绝对建议不要使用addslashes
,它的用途很少。请改用mysql_real_escape_string
或prepared statements。
我还建议不要将数组中的vales分解为单独的变量,它只会导致问题。如果你真的想这样做,那就是extract
函数,它正是这样做的。但是,再一次,不要这样做。数组是处理这类数据的最佳方式。
答案 1 :(得分:0)
你需要为$ _POST [1]和$ _POST [2]分配值,我已经为你完成了这个,但通常它们会从我假设的表格中填充吗?
我不确定你为什么要做这样的事情:$ {'field'。$ key},但我已经离开那部分,因为我认为你必须有理由。
无论如何我已经修改了你的代码,见下文。
$_POST['1'] = '<h1>variable 1</h1>';
$_POST['2'] = '<h2>variable 2</h2>';
foreach($_POST as $key => $value){
${'field'.$key} = trim(addslashes(strip_tags($value)));
echo "POST field info #". $key ." = ". ${'field'.$key}."<br />";
}
以上代码输出:
POST字段信息#1 =变量1
POST字段信息#2 =变量2
另一方面,使用诸如“1”和“2”之类的字段名称并不是很好。尝试使用更具描述性的内容,但正如我上面所说,我假设你有理由这样做。
更新: 即使您使用表单元素的特定名称,您仍然可以使其适用于任何表单。我在下面添加了几行作为例子。
$_POST['email'] = 'example@example.com';
$_POST['password'] = 'hgbks78db';
$_POST['name'] = '';
foreach($_POST as $key => $value){
if($value==''){
echo 'POST field "'.$key . '" is empty<br />';
/* I added the name of the field that is empty to an error array
so you have a way of storing all blank fields */
$a_error[] = $key;
}
else{
echo 'POST field "'.$key . '" is not empty<br />';
}
}