У меня есть два файла, логин. php и панель инструментов. php. Пользователь должен быть перенаправлен на страницу входа. php, если $_SESSION['valid']
имеет значение false. Я var_dumped $_SESSION
, и он напечатал array(0) { }
. Означает ли это, что переменные сеанса не устанавливаются по какой-либо причине? Если так, как я могу это исправить? Вот код:
Панель инструментов. php:
<?php
session_start();
if(!$_SESSION['valid']) {
header("Location: login.php");
die();
}
$title = 'Dashboard';
require_once 'header.php';
?>
<!DOCTYPE html>
<html>
<style>
table, th, td {
border: 1px solid black;
}
</style>
<body>
<body>
<p>WIP</p>
</body>
</html>
Login. php:
Я начинаю сеанс в самом верху файла:
<?php
session_start();
if($_SESSION['valid']) {
header("Location: dashboard.php");
die();
}
?>
<!DOCTYPE html>
<html>
<style>
table, th, td {
border: 1px solid black;
}
</style>
<?php
$title = 'Login';
require_once 'header.php';
?>
<body>
<main class="container p-5">
<form action="/dashboard.php" method="post">
<div class="form-group">
<input autocomplete="off" autofocus class="form-control" name="username" placeholder="Username" type="text"/>
</div>
<div class="form-group">
<input class="form-control" name="password" placeholder="Password" type="password"/>
</div>
<button class="btn btn-primary" type="submit">Log In</button>
</form>
</main>
</body>
<?php
include 'config.php';
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
$username = $_POST["username"];
$pwd = $_POST["password"];
$conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT username, email, password FROM tp_users WHERE username='$username' LIMIT 1";
$result = $conn->query($sql);
if(!$result){
echo $conn->error;
}
$row = $result->fetch_assoc();
$dbpwd = $row['password'];
$user = $row['username'];
if ($user == $username && password_verify($pwd, $dbpwd)) {
$_SESSION['valid'] = true;
$_SESSION['username'] = $username;
} else {
echo "error";
}
$conn->close();
}
?>
</html>
делает echo var_dump($_SESSION);
на панели инструментов. php файл печатает точно: array(0) {}
Есть идеи, почему это не работает? Я спросил несколько человек на других форумах кода без go. Любая помощь приветствуется. Благодаря.