我目前在让登录系统正常工作时遇到了一些麻烦,我相信我已经找到了原因,尽管我不知道它为什么会发生或具体是什么原因造成的。
我有一个存储在数据库中的散列密码。该password
列的值为:
18e2acd33fd3ec752c344b463d00238e35b6b77ed65941f69b9eb96471834f1e507d846071768548f8cf125d6c74ce614d477a576657983bb8620bbc49eed7de
现在,当我像这样在 PHP 中简单地选择和打印该字段时:
$query = "SELECT password FROM webusers WHERE username = 'Roy'";
$update = odbc_exec($connect, $query);
$row = odbc_fetch_array($update);
print $row['PASSWORD'];
它输出:
18e2acd33fd3ec752c344b463d00238e35b6b77ed65941f69b9eb96471834f1e507d846071768548f8cf125d6c74ce614d477a576657983bb8620bbc49eed7d
滚动到两个散列的最后,您会看到第二个散列缺少最后一个“e”,所以这会影响我的整个登录系统。为什么会发生这种情况?我不确定是 PHP 还是 SQL 应该受到责备。
我使用的是 PHP 5.4.7,数据库是通过 ODBC 连接的 4D SQL 服务器。
编辑:password
根据 4D的手册,数据类型Text
最多可以容纳 2GB 的数据,因此列大小不是问题。