我应该如何处理';记住我';PHP登录期间的选项?
我正在用PHP建立一个网站,但我不确定应该如何处理用户在登录过程中使用的“记住我”选项 我不确定是将用户名和密码保存在JavaScript存储中,并在再次提示用户登录时自动填充它(我怀疑这个选项,因为它会非常不安全),还是以某种方式使PHP会话永不过期(这可能吗?) 以下是当前登录脚本:我应该如何处理';记住我';PHP登录期间的选项?,php,cookies,pdo,setcookie,Php,Cookies,Pdo,Setcookie,我正在用PHP建立一个网站,但我不确定应该如何处理用户在登录过程中使用的“记住我”选项 我不确定是将用户名和密码保存在JavaScript存储中,并在再次提示用户登录时自动填充它(我怀疑这个选项,因为它会非常不安全),还是以某种方式使PHP会话永不过期(这可能吗?) 以下是当前登录脚本: <?php include_once("connection.php"); session_start(); if (!empty($_POST)) { $sth = $dbh->pr
<?php
include_once("connection.php");
session_start();
if (!empty($_POST)) {
$sth = $dbh->prepare("SELECT customer_number FROM customers WHERE username = :username AND password = :password");
$sth->bindValue(':username', $_POST['username'], PDO::PARAM_STR);
$sth->bindValue(':password', $_POST['password'], PDO::PARAM_STR);
$sth->execute();
$result = $sth->fetchAll();
if (!empty($result)) {
$_SESSION['customer_number'] = $result[0]['0'];
header("Location: /");
}
else {
header("Location: /");
}
}
?>
“记住我”选项可通过$\u POST[“记住”]
访问以下代码:
if (isset($_POST['remember']) and $_POST['remember'] == "Yes") {
setcookie("username", $_POST['username'], time() + 60 * 60 * 24 * 100, "/");
setcookie("password", $_POST['password'], time() + 60 * 60 * 24 * 100, "/");
} else {
setcookie("username", "", time() + 60 * 60 * 24 * 100, "/");
setcookie("password", "", time() + 60 * 60 * 24 * 100, "/");
}
您将设置一个cookie。 会话是服务器,将在服务器关闭时删除(关闭浏览器) 时间是一分钟,“/”是所有页面。
<?php
if(isSet($cookie_name))
{
// Check if the cookie exists
if(isSet($_COOKIE[$cookie_name]))
{
parse_str($_COOKIE[$cookie_name]);
// Make a verification
if(($usr == $_POST['username']) && ($hash == md5($_POST['password'])))
{
// Register the session
$_SESSION['username'] = $_POST['username'];
}
}
}
?>
一些有用的答案:
当任何用户在选中
记住我
选项后登录时,使用令牌ID创建一个cookie
您可以遵循的步骤:
1) 创建一个随机令牌id,并将其与用户id
和过期时间一起存储在数据库中
2) 当用户登录时,将此cookie id
和tokenid
存储在cookie
中
身份验证:
如果找到持久的cookie
,请检查该cookie的记录是否存在,并检查令牌是否与数据库中的令牌匹配
还要检查过期时间和UserId
还可以从
此外,关于如何实现此功能,还有一个很好的。您应该设置一个cookie,使其持续时间比关闭浏览器时长。您需要使用cookie…我必须使用cookie吗(是否没有使用会话的方法)?可能有用:另外:将密码存储在cookie中,取消保存?那是一个非常错误的想法!!
<?php
if(isSet($cookie_name))
{
// Check if the cookie exists
if(isSet($_COOKIE[$cookie_name]))
{
parse_str($_COOKIE[$cookie_name]);
// Make a verification
if(($usr == $_POST['username']) && ($hash == md5($_POST['password'])))
{
// Register the session
$_SESSION['username'] = $_POST['username'];
}
}
}
?>