用PHP创建登录系统

Bli*_*meo 4 php passwords login username

有人可以帮帮我吗?我的用户名是Blimeo,我的密码是"密码",但是当我输入我的凭据时,它说"拒绝访问"就像我告诉它的那样.我100%确定我正确配置了mySQL数据库.

<html>
<body>
<?php
echo sha1('Blimeo');
if (isset($_REQUEST['attempt'])) {

    $link = mysql_connect('localhost', 'root', 'password') or die('Could not connect to database');
    $user = mysql_real_escape_string($_POST['user']);
    $password = sha1(mysql_real_escape_string($_POST['password']));
    mysql_select_db('test_users');
    $query = mysql_query(
        "SELECT user 
        FROM users 
        WHERE user = '$user' 
        AND password = '$password'
        ") or die(mysql_error());
    mysql_fetch_array($query);
    $total = mysql_num_rows($query);
    if ($total > 0) {
        session_start();
        $_SESSION['user'] = 'blah';
        header('location: dashboard.php');
    }
    else {
        echo '<br>Access denied!';

    }
}


?>
<form method="post" action="login.php?attempt">
    Enter your username:<input type="text" name="user"/><br/>
    Enter your password:<input type="password" name="password"/><br/>
    <input type="submit"/>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Sli*_*liq 15

更新,2016年

请仅使用现有的登录系统,这些系统几乎在每个PHP框架中都是开箱即用的!绝对没有理由自己编写这个,因为用户身份验证是一个很大的主题,并且需要几个月(几年)来编写一个严肃,稳定和现代的登录解决方案.

来自2012年的原文:

由于登录系统是一个安全问题,而且每个人都会一遍又一遍地犯同样的错误,我可以清楚地说:

采用专业脚本并通过代码来了解发生的事情,散列和腌制是什么以及会话可以有什么问题.

[删除过时链接]

以下是您可能需要的三个项目:

https://github.com/panique/php-login-one-file

https://github.com/panique/php-login-minimal

https://github.com/panique/huge

  • 这很棒,资源+1 (2认同)

Joã*_*ias 0

首先,您应该在页面的第一行开始会话。

您还应该更新代码以使用 PDO 语句而不是 mysql 函数。这些速度较慢并且容易出现 mysqli 问题。

然后,您需要检查返回的行数是否等于 1 且不大于 0。这将是一个安全问题,因为您的脚本可以被操纵以返回超过 1 行,然后它将验证并输入安全区域。

在我看来,问题是您的密码与数据库不匹配。回显您的密码的 sha1 并查看它是否与表匹配。