0

我做了一个 register.php-page 而不是写:

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} = '';
    }
}

我不知道我做错了什么,不管这是否是正确的方法,(猜测 ${$var} 是错误的)。出了什么问题,我应该如何解决?:(

4

4 回答 4

3

变量扩展不会通过'文字发生——要么将变量括在双引号中,要么完全跳过引号:

if(isset($_POST[$var])) {
//or
if(isset($_POST["$var"])) {
于 2013-10-18T15:02:08.110 回答
1

isset($_POST['$var'])应该只是isset($_POST[$var])

于 2013-10-18T15:03:31.320 回答
0

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

于 2013-10-18T15:04:44.403 回答
0

你为什么用''?

foreach ($array as $var) {
    if(isset($_POST[$var])) {
    $$var = mysqli_escape_string($mysqli, $_POST[$var]);
    } else {
        $$var = '';
    }
}
于 2013-10-18T15:06:58.697 回答