Я пытаюсь создать простой портал входа в систему, который использует 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>