@Klapanasos
Интересуюсь Веб-разработкой

Как отправить заголовки (куки) для авторизации из сформированной страницы?

Добрый день! Делаю авторизацию, нужно отправить куки.
Есть страница авторизации пользователя.
В body сайта динамически подгружаются страницы, адрес получаю через:
if(!isset($_GET['page'])){
    $content = 'main';
}else{
    $content = addslashes(strip_tags(trim($_GET['page'])));
}

<body>
    <div id="wrapper">
        <div class="container">
            <?
            include "../templates/header.php";
            include "../templates/menu.php";
            if(isset($_GET['page'])){
                include "../templates/breadcrumbs.php";
            }
            ?>
            <div id="content" class="mainCont">
                <?include '../pages/'.$content.'.php';?>
            </div>
        </div>
        <? include "../templates/footer.php";?>
    </div>
</body>

Страничка авторизации выглядит так:
<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){
    $login = $_POST['login'];
    $pass = $_POST['pass'];
    $query = mysqli_query($conn, "SELECT * FROM users WHERE login = '{$login}'");
    $user = mysqli_fetch_assoc($query) or die ("Ошибка БД" . mysqli_error($conn));
    if ($user['password'] == md5($pass)){
        echo 'Вы авторизованы';
        setcookie('users', $user['login'], time() + 1800);
        exit ;
    }
}
?>
<div align="center">
    <h3>Вход в личный кабинет</h3>
    <form action="" method="post" class="auth" >
        <input type="text" name="login" placeholder="Логин" required="required"><br>
        <input type="password" name="pass" placeholder="Пароль" required="required"><br>
        <label for="rememberMe">Запомнить меня</label>
        <input id="rememberMe" type="checkbox" name="rememberMe">
        <button type="submit" name="submit">Войти</button>
    </form>
</div>


Сама авторизация работает.
Заголовки естественно не отправляются, т.к. уже отправлены.
Подскажите, пожалуйста, что мне нужно сделать, чтобы решить эту задачу?
  • Вопрос задан
  • 257 просмотров
Решения вопроса 1
@Klapanasos Автор вопроса
Интересуюсь Веб-разработкой
Спасибо за совет по md5, Дмитрий, это я обязательно реализую!
Перемена мест не поможет, не срабатывает даже если совсем убрать echo.
Тут дело немного в другом. У меня все работает через index.php, соответственно сначала уходят ее заголовки, а страничка login.php, подгружаемая через include, и уже не позволяет их отправить.
Я пока только набираюсь опыта и не знаю что можно сделать в этой ситуации.

UPD: ну как обычно тупизм мод детектед. Поместил обработчик авторизации в заголовок index и все встало на свои места.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
gobananas
@gobananas
finishhim.ru
Заголовки надо отправить до первого вывода на странице, судя по вашему коду, просто в блоке
if ($user['password'] == md5($pass)){
        echo 'Вы авторизованы';
        setcookie('users', $user['login'], time() + 1800);
        exit ;
    }

Поменяйте местами строки echo и setcookie и всё должно быть нормально
И помните что md5 без соли небезопасен
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы