Php 登录后通过会话设置变量

Php 登录后通过会话设置变量,php,mysql,session,variables,Php,Mysql,Session,Variables,登录时,我们当然已经像往常一样设置了$_会话['username']和$_会话['password']。但是,我尝试将其打包成一个变量,以便在站点中使用: $logged = mysql_query("SELECT * FROM `users` WHERE `username`='$_SESSION['username']' AND password = '$_SESSION['password']'"); $logged = mysql_fetch_array($logged); 在以前的一

登录时,我们当然已经像往常一样设置了$_会话['username']和$_会话['password']。但是,我尝试将其打包成一个变量,以便在站点中使用:

$logged = mysql_query("SELECT * FROM `users` WHERE `username`='$_SESSION['username']' AND password = '$_SESSION['password']'");
$logged = mysql_fetch_array($logged);
在以前的一次设置中,这使我能够在站点上使用$logged,原因多种多样,例如调用登录用户的电子邮件以在表单中进行回音

然而,这一次,当使用此方法时,它无法响应任何内容。我曾尝试使用sessionusername变量来回送用户名,但后来我尝试使用session来回送电子邮件,但没有成功

如果有人能帮我找出原因,我将不胜感激。
它似乎并没有像它应该的那样从用户那里获取任何信息。

对我来说,这似乎只是一种逃避。试一试

$logged = mysql_query("SELECT * FROM users WHERE username='".$_SESSION['username']."' AND password = '".$_SESSION['password']."'");
$logged = mysql_fetch_array($logged);
还要确保调用会话_start;在发送任何标题/回显任何内容之前,如果您不知道的话

离题提示
只要这个查询不用于任何公共场合,就可以了。但是如果你想用这段代码做任何事情,一定要删除你的查询变量。如果不是,并且如果我的凭据没有经过验证或散列,您可以通过将密码设置为类似“”;从用户中删除*;正如查询会说的那样,SELECT*来自username='JohnDoe'和password=的用户;从用户中删除*

用于会话的使用

if(!session_id())
    session_start();
以上会话开始是每个页面中必须的

使用打印会话;要检查已初始化的会话变量

完成后,尝试使用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'];
}

评论您的进度以了解进一步的更改。

您是否阅读了有关变量插值的文档?您是否在某处回显了SQL查询以查看其呈现方式?请不要以纯文本形式存储密码!它存储在MD5中-这就是为什么它不工作的原因吗?我是否遗漏了一些东西?我已经尝试过了,但在使用它回送信息时,它仍然无法显示任何内容。似乎它只是返回空白。请尝试使用变量转储$logged和$u会话变量。