Не работает header('Location: profile.php')

Рейтинг: 0Ответов: 1Опубликовано: 16.08.2023

Всем привет, сделал лёгкую авторизацию по имени, и теперь, когда пользователь авторизовался, попал в profile.php и пытается перейти на login.php, я написал header('Location: profile.php'), так как он уже авторизован и авторизацию ему показывать не надо, но у меня почему то все равно ему показывает авторизацию, и при этом еще и очищается $_SESSION['name'], в чем моя ошибка?

Login.php:

<?php
session_start();
if($_SESSION['name']) {
    header('Location: profile.php');
    die();
}
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Сессии и куки</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
</head>
<body>
    <main>
        <div class="container">
            <!-- Выводить если пользователь не указал свое имя -->
            <h1 class="dispaly-1 mt-5">Как тебя зовут?</h1>
            <div class="row">
                <form action="profile.php" method="post">
                    <div class="mb-3">
                      <label for="name" class="form-label">Ваше имя</label>
                      <input name="name" type="text" class="form-control" id="name" placeholder="Иван">
                    </div>
                    <button class="btn btn-primary">Сказать</button>
                </form>
            </div>
        </div>
    </main>
</body>
</html>

Profile.php:

<?php
session_start();
$_SESSION['name'] = $_POST['name'];
if (!$_SESSION['name']) {
    header('Location: login.php');
    die();
}
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Сессии и куки</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
</head>
<body>
<main>
    <div class="container">
        <!-- Выводить если пользователя сохранен в сессии или куках -->
        <h1 class="dispaly-1 mt-5">Привет, <?= $_SESSION['name'] ?>!</h1>
        <div class="btn-group">
            <a href="logout.php" class="btn btn-danger">Очистить</a>
        </div>
    </div>
</main>
</body>
</html>

Ответы

▲ 0Принят

profile.php

<?php
session_start();

if (isset($_POST['name'])) {
    $_SESSION['name'] = $_POST['name'];
}

if (!$_SESSION['name']) {
    header('Location: login.php');
    die();
}
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Сессии и куки</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
</head>
<body>
<main>
    <div class="container">
        <!-- Выводить если пользователя сохранен в сессии или куках -->
        <h1 class="dispaly-1 mt-5">Привет, <?= $_SESSION['name'] ?>!</h1>
        <div class="btn-group">
            <a href="logout.php" class="btn btn-danger">Очистить</a>
        </div>
    </div>
</main>
</body>
</html>