登录时,我们当然会像往常一样设置$_SESSION['username']和$_SESSION['password']然而,我正试图将其打包成一个变量,以便在网站上使用:
$logged = mysql_query("SELECT * FROM `users` WHERE `username`='$_SESSION['username']' AND password = '$_SESSION['password']'");
$logged = mysql_fetch_array($logged);
在之前的一个设置中,这使我能够出于各种原因在网站上使用$logged,例如调用已登录用户的电子邮件以回复表单
然而,这一次,当使用此方法时,它无法响应任何内容。我曾尝试使用会话用户名变量来回复用户名,但后来我尝试使用会话来回复电子邮件,但没有成功。
如果有人能帮我找出原因,我将不胜感激
它似乎没有从用户那里提取任何信息。
对我来说,这似乎是一件逃避的事情。尝试
$logged = mysql_query("SELECT * FROM users WHERE username='".$_SESSION['username']."' AND password = '".$_SESSION['password']."'");
$logged = mysql_fetch_array($logged);
此外,如果您不知道,请确保在发送任何标头/回显任何内容之前调用session_start();
。
离题提示
只要这个查询没有在公共场合使用,就没问题。但是,如果要将此代码用于任何事情,请确保大幅削减查询变量。如果没有,并且我的凭据没有经过验证或散列,您可以通过将密码设置为类似于'; DELETE * FROM USERS;#
的内容来进行一些令人讨厌的SQL注入,因为查询会显示SELECT * FROM users WHERE username='JohnDoe' AND password = ''; DELETE * FROM USERS;#'
关于会话的使用
if(!session_id())
session_start();
在每一页中,上述会话启动都是必须的。
使用print_r($_SESSION);
检查初始化的会话变量。。
一旦完成(尝试使用mysqli代替mysql)
$sql='SELECT col1, col2, col3 FROM table1 WHERE condition';
$rs=$conn->query($sql);
if($rs === false) {
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $conn->error, E_USER_ERROR);
} else {
$arr = $rs->fetch_all(MYSQLI_ASSOC);
}
foreach($arr as $row) {
echo $row['co1'];
}
请评论您的进度,以便进行进一步更改。。