Php 变量不会存储在会话中

Php 变量不会存储在会话中,php,session,pdo,session-variables,Php,Session,Pdo,Session Variables,因此,我试图存储用户登录到控制面板时的排名,该面板根据给定的排名显示不同的选项。我使用了与存储和显示用户名相同的方法,用户名显示在每个页面的顶部,工作正常。我一辈子都搞不明白为什么它对秩值不起作用,但我知道它不会在会话中保存它。这里有一点不起作用 $username = ($_POST['username']); $password = hash('sha512', $_POST['password']); $dbhost = 'mysql:host=█████████████████████

因此,我试图存储用户登录到控制面板时的排名,该面板根据给定的排名显示不同的选项。我使用了与存储和显示用户名相同的方法,用户名显示在每个页面的顶部,工作正常。我一辈子都搞不明白为什么它对秩值不起作用,但我知道它不会在会话中保存它。这里有一点不起作用

$username = ($_POST['username']);
$password = hash('sha512', $_POST['password']);

$dbhost = 'mysql:host=██████████████████████;dbname=███████████';
$dbuser = '███████████';
$dbpassword = '████████████████';

try {
$db = new PDO($dbhost, $dbuser, $dbpassword);
$statement = $db->prepare("select password from users where email = :name");
$statement->execute(array(':name' => $username));
$result = $statement->fetch();
$pass = $result[password];
$rank = $result[rank];}

catch(PDOException $e) {echo $e->getMessage();}

if ($password == $pass) {

session_start();
$_SESSION['username'] = $username;
$_SESSION['rank'] = $rank;
header('Location: http://█████████.ca/manage.php');

}
else{
include'../../includes/head.inc';
echo '<h1>Incorrect username or password.</h1>';
include'../../includes/footer.inc';
}

我还不熟悉PDO,因此我验证密码的方法非常粗略。

这并不是因为它不保存排名-显然你没有从 查询。您只需要输入密码。用户名来自其他地方:

$db = new PDO($dbhost, $dbuser, $dbpassword);
$statement = $db->prepare("select password from users where email = :name");

// Should be select password, rank

$statement->execute(array(':name' => $username));
$result = $statement->fetch();
$pass = $result[password];
$rank = $result[rank];}

哦,这是我们的手套。我们一直在找他们。别忘了在你的标题“位置:…”呼叫后呼叫退出!否则,该代码将在头调用后继续运行,并对黑客可见!ThiefMaster,我认为这会分散注意力:-/谢谢你的提示,Emil现在会添加它。另外,正确引用数组索引也不会有什么坏处,例如$pass=$result['password';$rank=$result['rank'];我知道这会是一个愚蠢的小错误,哈哈。非常感谢您的帮助,现在正在取得进展!