PHP - невозможно выйти из системы, используя глобальную переменную $ _SESSION - PullRequest
0 голосов
/ 16 октября 2018

Я застрял на этом больше дня, и я надеюсь, что кто-то здесь может мне помочь.Я знаю, что я не первый, кто задает вопросы о входе / выходе из сеансов в 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>

1 Ответ

0 голосов
/ 16 октября 2018

попробуйте с другим решением

напишите код ниже logout.php и все заработало.

session_start();
unset($_SESSION['user']); 
exit();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...