1

我对这里发生的事情感到茫然——因为根据我检查的用户,根本不一定有什么问题。这是相关数据库的结构:

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 问题还是我是个盲人白痴问题?

4

0 回答 0