Установка переменной сеанса не работает в PHP - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть два файла, логин. 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. Любая помощь приветствуется. Благодаря.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...