Я создаю систему аутентификации с опцией Запомнить меня.Все работает отлично, за исключением одного: когда я не устанавливаю флажок «Запомнить меня», он сохраняет связь, даже после перезапуска навигатора или даже компьютера.Пока 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/");
Я хочу, чтобы пользователь мог оставаться на связи или нет, когда он покидает свой навигатор.В настоящее время он всегда поддерживает их связь независимо от того, хотят они этого или нет.
У вас есть какое-либо объяснение, откуда возникла эта проблема?Я немного потерян.Спасибо!