PHP登录系统任何密码都可以工作

PHP登录系统任何密码都可以工作,php,mysql,database,Php,Mysql,Database,作为练习,我正在开发一个登录系统,我遇到了一个似乎无法解决的问题。下面是我所有的代码 请参阅我将我的密码设置为输入echo$password时得到的长代码;第43行下方$password=md5md5j3d4k,$password;。然后在浏览器上,它会给你这些代码,所以我把这些代码放在数据库的密码中,就像我看的教程所说的那样。现在它允许我以任何密码作为我的用户登录。所以我决定把密码设回password1一分钟,看看我是否可以用这个密码登录,如果我输入了错误的密码,它是否不允许我登录。还是失败了

作为练习,我正在开发一个登录系统,我遇到了一个似乎无法解决的问题。下面是我所有的代码

请参阅我将我的密码设置为输入echo$password时得到的长代码;第43行下方$password=md5md5j3d4k,$password;。然后在浏览器上,它会给你这些代码,所以我把这些代码放在数据库的密码中,就像我看的教程所说的那样。现在它允许我以任何密码作为我的用户登录。所以我决定把密码设回password1一分钟,看看我是否可以用这个密码登录,如果我输入了错误的密码,它是否不允许我登录。还是失败了。它现在不允许我输入任何密码,说它们都不正确

login.php connect.php 尝试使用函数

例如,在数据库密码列中设置hashsha256、j3d4k的值。结果将是0dd15cf0c18375808efdbb7f7180526a6355fe02db72365d1ea0c70165e868d0

然后在检查时,对用户输入使用相同的散列,然后与存储的密码进行比较

$password = hash("sha256", $_POST['password']);
更新:
顺便说一下,您的代码容易受到SQL注入的攻击。切勿在查询中直接使用用户输入。

问题中的所有内容实际上与预期完全一致。在第二种情况下,您不应使用密码password1进行连接,因为您在数据库password1中的输入与表单中输入的密码哈希不匹配

唯一可疑的是,当您将数据库中的密码设置为打印的哈希值时,您可以使用任何密码登录。这显然不是预期的行为


我的猜测是,您实际上在connect.php中定义了一个名为$password的全局变量,可能是数据库密码。这样,在第43行,$password的值将始终相同,无论您在表单中输入了什么密码,因此哈希值也将相同。要确认它,请在需要“connect.php”后立即打印$password的值,看看这是否是您在表单中输入的密码。

只是一个提示:将您的逻辑与演示分离,这样会更容易管理。例如$password=password\u hashmd5j3d4k,$password@Fred ii-密码_哈希需要PHP5.5+。不幸的是,许多主机的系统上没有安装PHP5.5。例如,他可以将PHP的哈希函数与sha256结合使用,以实现更安全的哈希。@Joshua nope,如$password=password\u hash$password;拥有一个登录系统的最好方法,是不要自己去做。原因:我以前见过很多次这样的情况,人们会使用$password变量进行DB连接/表单变量。是的,我经常看到它。
<?php

$con = mysqli_connect("localhost", "Joshua", "Danielle104");
mysqli_select_db($con, "user");

?>
$password = hash("sha256", $_POST['password']);