用于登录脚本的 PHP Autologin 函数

标签 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>

这就是我的进展。保存用户名和密码。 但是我应该怎么做才能自动登录?

最佳答案

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

一个简单的思考方法是:

1) 在用户表中创建一个新字段,用于存储 MD5 哈希值。您可以将其称为 session key 。
2) 提交页面时,脚本应执行以下操作。

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

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

  • 检查 session 是否仍然存在。如果是,则呈现页面。
  • 如果 session 不存在,检查 cookie。
  • 如果 cookie 存在,请在数据库中查找该 session ID 并确保它没有过期。然后构建 session 并呈现页面。

这应该会使您的应用更加安全。这可能不是最好的编码方式,但这些概念应该能让您了解如何制作相当安全的登录页面。

关于用于登录脚本的 PHP Autologin 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1382303/

相关文章:

javascript - FOSUserBundle AJAX 使用 Symfony2 登录(路由)

php - Cookie 是否存在安全风险?

javascript - 未根据 OPTIONS 请求发送 Cookie

php - 如何测试通过xampp连接到mysql数据库的php登录?

php - 我想从一个 php 文件中获取包含 mysql 查询的变量,并编写将在另一个 php 文件中打印查询内容的循环

PHP领域模型

php - 如何从数据库中的所有表中搜索包含当前月份的日期的所有记录?

python - 如何使用 python 在 selenium webdriver 中将 cookie 设置为特定域?

json - 通过json发送expressjs cookie

vue.js - 此 set-cookie 被阻止,因为它具有 samesite=lax