使用if(isset)的Foreach循环不起作用

时间:2013-10-18 15:00:35

标签: php foreach

我制作了一个register.php页面而不是写作:

if(isset($_POST['username'])) {
    $username = mysqli_escape_string($mysqli, $_POST['username']);
} else {
    $username = '';
}

多次(一个用于用户名,生日等),我试图将(尚未设置的)变量/字符串存储在数组中:

$array = array('email', 'username', 'birth')

然后做一个foreach循环:

foreach ($array as $var) {
    if(isset($_POST['$var'])) {
    ${$var} = mysqli_escape_string($mysqli, $_POST['$var']);
    } else {
        ${$var} = '';
    }
}

我不知道我做错了什么,如果这是正确的做法,那就是neiter(猜测$ {$ var}是错误的)。怎么了?我应该怎么解决?:(

4 个答案:

答案 0 :(得分:3)

通过'文字不会发生变量扩展 - 将变量用双引号括起来或完全跳过引号:

if(isset($_POST[$var])) {
//or
if(isset($_POST["$var"])) {

答案 1 :(得分:1)

isset($_POST['$var'])应为isset($_POST[$var])

答案 2 :(得分:0)

除了'$ var'之外,你应该使用数组来存储转义输入,而不是直接从输入声明变量。通过按照您的方式执行操作,您可以轻松地意外地引入安全问题。

答案 3 :(得分:0)

你为什么使用''?

foreach ($array as $var) {
    if(isset($_POST[$var])) {
    $$var = mysqli_escape_string($mysqli, $_POST[$var]);
    } else {
        $$var = '';
    }
}