我写了一个foreach循环并保存在几行代码中。它基本上采用所有$ _POST变量并使用它们的名称来创建正常的php变量。
foreach(array_keys($_POST) as $str)
{
${$str}=mysqli_real_escape_string($connection,trim($_POST["$str"]));
}
它按预期工作,动态创建变量。
现在,我想把它放在一个自定义函数中,所以我修改了它:
function createvariablesfromPOST()
{
foreach(array_keys($_POST) as $str)
{
${$str}=mysqli_real_escape_string($GLOBALS["connection"],trim($_POST["$str"]));
}
return //something;
}
它显然不起作用,因为我不知道如何使这个函数返回//某些东西(无论那个东西可能是什么)到全局范围。什么应该在这里完成?
我不能让foreach循环返回任何东西,直到循环完成。不是这样吗?
请帮忙。
答案 0 :(得分:0)
分配用户提供的任意变量可能非常危险!他们可以覆盖你的任何变量。
它不起作用的原因是因为它们不在全球scope中。您必须执行$GLOBALS[$variable] = 'something';
相反,您应该将变量分配给数组,以便它们与全局范围隔离。即$input[$$var] = $escaped_value
;