Php 缺少密码检查

Php 缺少密码检查,php,mysql,database,md5,verification,Php,Mysql,Database,Md5,Verification,我正在使用下面的代码,它检查空字段并验证电子邮件,但即使密码正确,它也不会登录。密码已插入md5保护,下面是代码 PHP: 使用ini_set函数后,我看到了错误,我收到了此消息,但不确定它的含义: There are the lines where the errors are at: if ($pass != $info['password']) 这条线呢 if ($_POST['password'] !

我正在使用下面的代码,它检查空字段并验证电子邮件,但即使密码正确,它也不会登录。密码已插入md5保护,下面是代码

PHP:

使用ini_set函数后,我看到了错误,我收到了此消息,但不确定它的含义:

There are the lines where the errors are at: 

                if ($pass != $info['password']) 
这条线呢

                        if ($_POST['password'] != $info['password']) {

我能看到的一件事是,在发布的密码(非md5版本)上使用
stripslashes
,但在md5版本上使用它来存储密码

您实际上不需要在数据库中的密码上使用
stripslashes
,因为任何密码都不应该以slashed开头

如果您更改,会发生什么情况:

$_POST['password'] = stripslashes($_POST['password']);
$info['password'] = stripslashes($info['password']);
$_POST['password'] = md5($_POST['password']);
致:


不久前,您用完全不同的代码问了一个类似的问题,所以我假设现在更多的是数据库问题


您的密码字段是否允许md5哈希包含32个字符?太短的密码字段将截断md5哈希,因此登录总是失败。

您试图使用
$info['password']
访问数据库字段,但数据库字段实际上是
password
大写字母p

您正在调用
mysql\u escape\u string
将数据存储在数据库中,并且调用的
stripsalas
会在提交的登录表单上进行删除。也许他们正在对密码做不同的事情。还有几件事需要考虑:

  • 如果您需要输入一个密码将其存储在数据库中,则不需要调用
    stripslashes
    mysql\u escape\u string
    。它已被转换为仅字母数字字符
  • mysql\u escape\u字符串
    已弃用
  • 与其转义email字段,不如验证它的格式

插入新注册后,手动md5使用的密码,然后对照数据库中存储的密码检查该值。你可能会发现它们是不同的

我解决了这个问题,如果您注意到在查询中它显示SELECT*,而我尝试选择电子邮件、密码。

谢谢。我做了改变,我仍然无法通过。嘿,是的,我正在使用另一个代码,所以在这里重新发布。密码maxlength设置为50。db中的密码字段设置为varchar(40)。信息['password']的用途是什么?这是你的密码。。。但在我看来,$info['password']是数据库中存储的密码的散列,用于比较against@AAA你能粘贴你用来在数据库中存储注册的代码吗?谢谢JMC。我进行了测试,回显了输入的密码和数据库中的密码,它们与md5匹配。我还在努力寻找它。无论如何,谢谢你。如果你能在这方面帮助我,我将不胜感激。我得出的结论是,问题可能与$info['password']有关,我重复了它,但没有显示任何内容……在屏幕上打印错误后,我收到以下消息:注意:未定义的索引:第103行/var/www/domain.com/htdocs/login.php中的密码注意:使用未定义的常量密码-第103行/var/www/domain.com/htdocs/login.php中假定的“密码”11@AAA数据库字段大写为“密码”您正在使用“$info['password']”访问它!我不知道为什么,但它仍然工作,而不必改变它。哈哈,疯狂的代码。那根本不应该有任何区别。真的。但我不知道它为什么起作用,我不记得还有什么改变。
                        if ($_POST['password'] != $info['password']) {
$_POST['password'] = stripslashes($_POST['password']);
$info['password'] = stripslashes($info['password']);
$_POST['password'] = md5($_POST['password']);
$_POST['password'] = md5($_POST['password']);
$_POST['password'] = stripslashes($_POST['password']);
$info['password'] = stripslashes($info['password']);