Я застрял на этом больше дня, и я надеюсь, что кто-то здесь может мне помочь.Я знаю, что я не первый, кто задает вопросы о входе / выходе из сеансов в PHP, но другие ответы, которые я нашел, никогда не работали для меня.
В данный момент я делаю сервер-сторонние сценарии для веб-сайта, которые мы с коллегами делаем.Предполагается, что на сайте есть панель администратора, на которой администратор может видеть некоторые полезные данные, которые запрещены для других посетителей сайта.Поэтому я пытаюсь построить систему входа в систему / выхода из системы с использованием сеансов, впервые я сделал это с тех пор, как начал веб-разработку.
Проблема заключается в том, что, хотя вход в систему, кажется, работает нормально, выход из системыне работает вообще.Что бы я ни пытался, $ _SESSION ['user'] никогда не уничтожается и всегда остается равным имени администратора.Кто-нибудь здесь знает, что я делаю не так?
Я буду публиковать свои функции login.php, logout.php и jQuery ajax, которые я использую для их вызова.В случае, если это важно для ответа на вопрос: в настоящее время веб-сайт ведет все маршруты к index.php, где отображаются различные представления в зависимости от маршрута.
Помощь будет высоко ценится!
login.php
session_start();
if ($_POST) {
$nameInput = $_POST['usernameLogin'];
$passwordInput = $_POST['passwordLogin'];
$DBrow = dbCompare("adminDash", "user", $nameInput);
if ($DBrow != NULL) {
$hashPass = $DBrow['pass'];
$passCheck = password_verify($passwordInput, $hashPass);
if ($passCheck == TRUE) {
$_SESSION['user'] = $DBrow['user'];
header("Location: ./dashboard");
}
}
else {
return 0;
}
}
logout.php
session_start();
if ($_POST) {
unset($_SESSION['user']);
session_destroy();
if(session_destroy()) {
header("Location: ./");
}
}
jQuery Ajax вызывает
function logIn() {
$.ajax({
method: 'POST',
data: {
usernameLogin: document.getElementById("usernameLogin").value,
passwordLogin: document.getElementById("passwordLogin").value
},
url: '/app/dataAccess/login.php',
success: function(response){
if (response == 0) {
alert("Uw gebruikersnaam en/of wachtoord komen niet overeen. Probeer het nog een keer of herstel uw wachtwoord met onderstaande knop.")
}
},
error: function(){
alert("Er ging iets mis met het verzenden van uw data. Neem contact op met uw systeembeheerder.")
}
})
}
function logOut() {
$.ajax({
method: 'POST',
url: '/app/dataAccess/logout.php',
success: function (response) {
alert("succes")
},
error: function(){
alert("error")
}
})
}
Модал начальной загрузки, используемый для входа / выхода
<div class="modal backgroundPijl form-horizontal text-center" id="myModal">
<div class="modal-dialog">
<div class="modal-content">
<!-- Modal Header -->
<div class="modal-header">
<h5 class="col-12 modal-title text-center">Admin login</h5>
</div>
<!-- Modal body -->
<?php if ($_SESSION['user']) : ?>
<div class="modal-footer">
<a type="button" id="loginButton" class="btn btn-danger mr-auto" onclick="logOut()" href="/home">Logout</a>
<button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
</div>
<?php else : ?>
<div class="modal-body">
<div class="form-group">
<label for="usernameLogin">Gebruikersnaam</label>
<input id="usernameLogin" name="usernameLogin" class="form-control">
</div>
<div class="form-group">
<label for="passwordLogin">Wachtwoord</label>
<input id="passwordLogin" type="password" name="passwordLogin" class="form-control">
</div>
</div>
<!-- Modal footer -->
<div class="modal-footer">
<button type="button" id="loginButton" class="btn btn-danger mr-auto" onclick="validateLogin()" href="/dashboard">Login</button>
<button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger mr-auto ml-auto">Wachtwoord vergeten?</button>
</div>
<?php endif; ?>
</div>
</div>