我正在使用“记住我”选项创建身份验证系统。一切正常,除了一件事:当我不选中“记住我”复选框时,即使重新启动导航器甚至计算机后,它也可以保持连接状态。在未设置Cookie的情况下,会话变量保持不变。
我已经尝试了很多方法,但是重新启动所有内容后会话变量保持不正常。
这是我的帐户页面代码:
if (!session_id()) {
session_start();
}
$secondDB = new wpdb('XXX', 'XXX', 'XXX', 'XXX');
$allCustomers = $secondDB->get_results("SELECT * FROM client");
if (!isset($_COOKIE["connectedUser"])) $_COOKIE["connectedUser"] = false;
if ($_COOKIE["connectedUser"]=='null') $_COOKIE["connectedUser"] = false;
echo "Cookie : ".$_COOKIE["connectedUser"]."<br>";
echo "Session : ".$_SESSION["connectedUserID"]."<br>";
if($_COOKIE["connectedUser"] != false && !isset($_SESSION["connectedUser"]))
{
$_SESSION["connectedUserID"] = $_COOKIE["connectedUser"];
}
if(isset($_SESSION["connectedUserID"]))
{
foreach($allCustomers as $customer)
{
if($customer->client_id == $_SESSION["connectedUserID"])
{
foreach($customer as $key=>$value) {
echo "<strong>".$key." : </strong>".$value."<br>";
}
}
}
echo "<br>";
echo "<a href=\"http://numerisat.fr/deconnexion/\">Log out</a>";
} else {
// AUTHENTIFICATION
echo "<form action=\"\" method=\"POST\">";
echo "<label for=\"username\">Login :</label>";
echo "<input type=\"text\" name=\"username\" required/>";
echo "<label for=\"password\">Password :</label>";
echo "<input type=\"password\" name=\"password\" required/>";
echo "<label for=\"remember\">Remember me</label>";
echo "<input type=\"checkbox\" name=\"remember\"/>";
echo "<input type=\"submit\" name=\"valider\" value=\"Log in\">";
echo "</form>";
$authResult = "";
if(!empty($_POST["username"]) && !empty($_POST["password"]))
{
foreach($allCustomers as $customer) {
if($customer->client_username == $_POST["username"])
{
if($customer->client_password == md5($_POST["password"]))
{
$_SESSION["connectedUserID"] = $customer->client_id;
if($_POST["remember"] == "on")
{
setcookie("connectedUser", $_SESSION["connectedUserID"], time()+3600*24*15, "/");
}
header('Location: http://numerisat.fr/espace-client/');
} else {
$authResult = "Invalid login or password. Please try again.";
}
} else {
$authResult = "Invalid login or password. Please try again.";
}
}
echo $authResult;
}
}
这是我的注销代码:
if (!session_id()) {
session_start();
}
unset($_COOKIE["connectedUser"]);
setcookie("connectedUser", false, time()-3600, "/");
unset($_SESSION["connectedUserID"]);
session_destroy();
header("Location: http://numerisat.fr/espace-client/");
我想要的是用户离开导航器时可以选择保持连接或不保持连接。暂时,无论他们是否想要,它始终可以使他们保持联系。
您对此问题的来源有任何解释吗?我有点迷路了。谢谢!
答案 0 :(得分:0)
好!我想我找到了问题的根源。我有点傻,但是让我解释一下,并告诉遇到类似问题的人。
即使将WordPress更新到最新版本,或者升级到PHP 7.1并能够使用WP Session Manager插件,会话仍然无法正常工作。
寻找答案的时间太长,更改代码以找到方法后,我终于意识到了一些事情。
Firefox。在设置中,我选中了“还原上一个会话”框。因此,每次我离开Firefox并重新使用它时,它都会还原我的所有信息。
取消选中“恢复上一个会话”框,它应该可以工作。
那是我的问题所在。
仍然感谢您的帮助!