我对这里发生的事情感到茫然——因为根据我检查的用户,根本不一定有什么问题。这是相关数据库的结构:
userID password salt
VARCHAR(7) VARCHAR(64) VARCHAR(64)
注意:密码和盐是 sha256 哈希。
以及相关代码(所有数据都通过 SSL 传输):
$pass = $_POST['pass'];
$user = $_POST['user'];
$query = 'SELECT password, salt FROM `Passwords` WHERE userID="'.$user.'";';
$result = mysql_query($query);
$passHash = mysql_result($result,0,"password");
$salt = mysql_result($result,0,"salt");
$pass = hash("sha256",$salt.$pass);
if($pass==$passHash) {/*Allow Login*/}
并非所有用户都选择了密码,而且我的组织历来使用邮政编码(我知道...)代替正确的密码,因此该代码确实为此设置了一些例外,但所有这些用户都可以正常登录. (只有一些)成员的密码无法登录,因为$salt由于某种原因返回空白(但我也没有收到任何 MySQL 错误)。我在运行调试尝试时通过 phpMyAdmin 检查了数据库,但没有明显的错误。
知道为什么它对某些用户来说是空白的,而对其他用户却不是吗?这是 PHP 问题、MySQL 问题还是我是个盲人白痴问题?