我对这里发生的事情感到茫然 - 因为根据我检查的用户,根本不一定有什么问题。这是有问题的数据库结构:
userID password salt
VARCHAR(7) VARCHAR(64) VARCHAR(64)
注意:密码和 salt 是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问题,还是我一个盲目的白痴问题?