gpt4 book ai didi

PHP 在从数据库检索时截断散列密码

转载 作者:搜寻专家 更新时间:2023-10-31 22:07:36 24 4
gpt4 key购买 nike

我目前在让登录系统正常工作时遇到了一些问题,我相信我已经找到了原因,尽管我不知道为什么会这样,也不知 Prop 体是什么原因造成的。

我在数据库中存储了一个散列密码。 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 的数据类型是 Text,根据 4D 的手册,它最多可以容纳 2GB 的数据,因此列大小不是问题。

最佳答案

要确定您的问题是在 MySQL 还是 PHP 中,请直接登录 MySQL 并确定您是否能够在直接执行 SQL 命令时检索到完整的值。我将使用 PHP 正在使用的相同 SQL 查询,以便您从 MySQL 系统看到与您的应用程序将看到的相同输出。如果您在 MySQL 中看到截断的值(PHP 不再是图片的一部分),那么您肯定知道您已经超出了您在 MySQL 中定义的字段的字符限制。同样,如果字符串显示完美,则 PHP 一定截断了该值。

如果 PHP 正在截断该值,那么它可能是 mysql_result 对象的限制,或者它可能是 PHP 的系统限制,这似乎不太可能。通过进一步缩小问题的位置,您的答案将变得清晰。

我从未见过 PHP 截断字符串。在为电子邮件制作附件标题时,我在单个字符串值中存储了至少一兆字节的数据。我不认为您的限制在于 PHP native 语言。

关于PHP 在从数据库检索时截断散列密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16282138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com