如何使用 md5 登录 PHP


How to login in PHP using md5

我已经用md5制作了一个注册脚本,但现在我必须使用它登录。我尝试了很多东西,但没有奏效。

这是我的代码:

if(isset($_POST['sub'])) {
include_once("Connect.php");
$username = mysqli_real_escape_string($dbcon,$_POST['username']);
$password = mysqli_real_escape_string($dbcon,$_POST['password']);
$password = md5($_POST['password']);//hashing pass 
$sql = "SELECT * FROM users WHERE userName = '{$username}' and userPassword = '{$password}'";
$query = mysqli_query($dbcon, $sql) or die(mysqli_error($dbcon));
$count = mysqli_num_rows($query);
if ($count > 1)
{
    $row = mysqli_fetch_row($query);
    $userId = $row[0]; // takes id from DataBase
    $dbUsername = $row[1]; // takes username from DataBase
    $dbPassword = $row[2]; // takes userpass from DataBase
    $_SESSION['password'] = $dbPassword;
    $_SESSION['username'] = $dbUsername;
    $_SESSION['id'] = intval($userId);
    $_SESSION['login'] = TRUE; // if username and pass are corrects it logs in
    header('location: login.php');
    die(); // using die() after header()
}
else {
    echo "incorrect username or password.";
}
}

谢谢大家的评论。

解决方案:

  $inlogcrypt = md5($password);

$sql = "SELECT * FROM users WHERE userName = '".$username."' and userPassword = '".$inlogcrypt."'";

如果你是PHP的新手,我不建议从构建自定义CMS开始。

若要了解有关(不同类型的)身份验证的详细信息,可以:

  • 阅读本指南,了解使用 PHP/PDO 进行基本身份验证。
  • 使用 PHPAuth。
  • 使用 OpenID,这样您就不必处理登录数据。

第一个链接将向您展示如何

  1. 使用 PDO 而不是 mysql(i)。
  2. 过滤提交的数据(虽然我承认他们以一种有点丑陋的方式这样做,但它很容易理解)。
  3. 使用$SESSION存储会话数据。
  4. 使用相同的会话数据要求在某些页面上进行身份验证。

只要知道登录包含敏感数据,在构建您希望人们使用的平台之前,您应该学习更多内容。

我刚刚提到了一些关于登录的事情,但你也应该了解更多关于散列(不要使用 md5 进行登录,我推荐 bcrypt)和程序结构。