PHP自动登录功能登录脚本

5 php cookies

我如何为此脚本实现自动登录功能?

session_start();
$result = mysql_query("SELECT id FROM users 
                       WHERE username = '{$_POST['username']}' 
                       AND password = '{$_POST['password']}'");

     if (isset($_POST['savelogin'])) {
     setcookie("SaveLogin", $_POST['username'], time()+3600);
     setcookie("SaveLogin", $_POST['password'], time()+3600);
     }


if (mysql_num_rows($result) == 0) {
    exit('wrong username/password');

    } else {
    $_SESSION['id'] = mysql_result($result, 0, 'id');
    header("Location: ./");
    }



<form method="post">


Username: <input type="text" name="username" size="22" /><br>
Password: <input type="password" name="password" size="22" /><br>

<br>
Autologin? <input type="checkbox" name="savelogin" />

<input type="submit" value="Login" />

</form>
Run Code Online (Sandbox Code Playgroud)

多数民众赞成我有多远.保存用户名和密码.但我应该如何做到自动登录呢?

Doo*_*taz 13

首先,您不希望将用户名和密码保存到cookie中.这是个坏主意.

一个简单的思考方法是:

1)在users表中创建一个存储MD5哈希的新字段.你可以称之为session_key.
2)提交页面时,脚本应执行以下操作.

  • 验证用户名和密码
  • 如果它是一个好的用户名和密码对,请检查saveLogin变量
  • 如果设置了saveLogin变量,则生成md5并将其存储在数据库中.还将md5存储在cookie中.确保数据库表也有一个cookie-expires字段.
  • 构建您需要的会话数据.
  • 重定向到./

3)在./页面上,执行以下操作:

  • 检查会话是否仍然存在.如果是,则渲染页面.
  • 如果会话不存在,请检查cookie.
  • 如果cookie存在,请在数据库中查找该会话ID,并确保它尚未过期.然后构建会话并呈现页面.

这应该会让您的应用更加安全.它可能不是最好的编码方式,但这些概念应该让您了解如何创建一个相当安全的登录页面.


zom*_*bat 5

这是一种非常不安全的自动登录方法.您绝不应将密码存储在纯文本的任何位置.

更好的策略如下:

  1. 显示正常登录表单,并带有"自动登录"复选框.
    • 如果选中自动登录框,则通常会验证其用户名和密码.如果成功,则可以为自动登录设置特殊cookie.
    • 为特殊cookie提供类似'autologin'的名称,以及包含其用户名的值,以及用户数据的盐渍md5哈希值.像"user = username&hash = 123456xyz.etc"之类的东西.
    • 当您下次看到该用户并希望自动登录时,您将检查此特殊cookie并验证其内容.拆分用户名和哈希值,然后根据用户名从数据库中取出帐户,然后重新执行md5以与cookie哈希数据进行比较.如果它有效,您可以登录(即开始新会话).