我制作了一个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}是错误的)。怎么了?我应该怎么解决?:(
答案 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 = '';
}
}