Как сохранить сеанс с использованием PHP, когда у клиента отключены куки в браузере - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь создать простой портал входа в систему, который использует php-сессии для хранения статуса пользователя, вошедшего в систему.Я хочу, чтобы данные сеанса оставались доступными, даже если в браузере пользователей отключены файлы cookie.

Я искал в Интернете способ найти это, но не нашел ничего, что могло бы дать хорошее объяснение.Я довольно новичок в php, но у меня есть базовые функциональные возможности веб-приложения, за исключением хранения данных сеанса без файлов cookie.

Насколько я понимаю, когда вы запускаете сеанс с помощью session_start (), это создает файл cookie, которыйсохраняет идентификатор сеансаЭтот идентификатор затем может быть передан по сайту с помощью cookie или распространения URL.Сервер, на котором я запускаю сайт, не разрешает распространение URL, поэтому я должен использовать куки, но я не понимаю, как он работает, если кто-то отключает куки в браузере.

Вот заголовок header.phpчто я включил в каждую страницу:

<?php
session_start();
session_regenerate_id(true);
if (isset($_POST["LogoutBtn"])) {
    $_SESSION = array();
    if (ini_get("session.use cookies")) {
        $yesterday = time() - (24 * 60 * 60);
        $params = session_get_cookie_params();
        setcookie(session_name(), "", $yesterday, $params["path"], $params["domain"], $params["secure"], $params["httponly"]);
    }
    session_destroy();
}

$dataFiles = array("/amacmi01_p1fma/data/DTresults.php", 
                   "/amacmi01_p1fma/data/P1results.php", 
                   "/amacmi01_p1fma/data/PfPresults.php");
$page = $_SERVER["PHP_SELF"];
?>
<!DOCTYPE html>
<html>
<head>
    <meta author="Andrew Macmillan">
    <meta charset="UTF-8">
    <?php
        $title = "";
        switch ($page) {
            case "/amacmi01_p1fma/index.php":
                $title = "BBK DCS Home Page";
                break;
            case "/amacmi01_p1fma/admin-login.php":
                $title = "DCS Admin Login";
                break;
            case "/amacmi01_p1fma/staff-login.php":
                $title = "DCS Staff Login";
                break;
            case "/amacmi01_p1fma/register-staff.php":
                $title = "Register New Staff";
                break;
            case "/amacmi01_p1fma/admin-options.php":
                $title = "Admin Options";
                break;
            case "/amacmi01_p1fma/intranet.php":
                $title = "BBK DCS Intranet Page";
                break;
            case "/amacmi01_p1fma/error.php":
                $title = "Error Viewing Modules";
                break;
            case "/amacmi01_p1fma/logged-out.php":
                $title = "Logging Out";
                break;
            case "/amacmi01_p1fma/data/DTresults.php":
                $title = "Introduction to Database Technology - DT Results";
                break;
            case "/amacmi01_p1fma/data/P1results.php":
                $title = "Web Programming using PHP - P1 Results";
                break;
            case "/amacmi01_p1fma/data/PfPresults.php":
                $title = "Problem Solving for Programming – PfP Results";
                break;
        }
        echo "<title>$title</title>";

        if (in_array($page, $dataFiles)) {
            echo '<link rel="stylesheet" type="text/css" href="../styles/style.css"/>';
        } else {
            echo '<link rel="stylesheet" type="text/css" href="styles/style.css"/>';
        }
    ?>
</head>
<body>
    <header>
        <?php
        if ($page !== "/amacmi01_p1fma/index.php" && $page !== "/amacmi01_p1fma/logged-out.php") {
            if (in_array($page, $dataFiles)) {
                echo '<div class="home-link">
                         <a href="../index.php">Return to Home Page</a>
                      </div>';
            } else {
                echo '<div class="home-link">
                         <a href="index.php">Return to Home Page</a>
                      </div>';                    
            }
        }

        if (isset($_SESSION["LoggedIn"]) && $page !== "/amacmi01_p1fma/logged-out.php") {
            $homeLink = "";
            if (in_array($page, $dataFiles)) {
                $homeLink = "../logged-out.php";
            } else{
                $homeLink = "logged-out.php";
            }
            echo '<div id="logout-form">
                       <form action="'.$homeLink.'" method="post">
                            <label for="logout-btn">You are logged in as '.$_SESSION["UserName"].'</label>
                            <input type="submit" name="LogoutBtn" id="logout-btn" value="Logout"/>
                       </form>
                  </div>';
        }
        ?>
    </header>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...