我有一个带PDO的登录系统,用于存储人员登录cookie时的用户名。 这意味着当它们到达重定向页面时,cookie可用于获取该用户的更多数据(例如,名字和名字)。
这是在index.php文件中设置cookie的代码:
setcookie('username',$username,time() + (86400 * 7));
这是我想使用Cookie的值获取数据的代码:
$username = $_COOKIE['username'];
$query = $handler->query('SELECT * FROM users WHERE username ='$username' ');
while($r = $query->fetch(PDO::FETCH_OBJ)){
echo $r->firstname, '<br>';
echo $r->secondname, '<br>';
}
每次运行代码时,都会返回以下错误消息:
解析错误:语法错误,第17行的C:\ xampp \ htdocs \ web \ home.php中的意外'$ username'(T_VARIABLE)
答案 0 :(得分:5)
变化:
('SELECT * FROM users WHERE username ='$username' ')
为:
("SELECT * FROM users WHERE username ='$username' ")
解释了语法错误。
为增加安全性而编辑:
$username = $_COOKIE['username'];
$query = $handler->prepare(" SELECT * FROM users WHERE username =:username");
$query->execute(array(
':username' => $username
));
while($r = $query->fetch(PDO::FETCH_OBJ)){
echo $r->firstname, '<br>';
echo $r->secondname, '<br>';
答案 1 :(得分:1)
虽然你的错误是一个愚蠢的解析错误,但你应该如何做到这一点正确
$stmt = $handler->prepare('SELECT * FROM users WHERE username = ?');
$stmt->execute([$_COOKIE['username']])
while($r = $stmt->fetch(PDO::FETCH_OBJ)){
echo $r->firstname, '<br>';
echo $r->secondname, '<br>';
}
顺便说一句,通过这样的登录系统,每个人都可以在其他人的名下登录