Изменение Cookie после вывода (php)

Есть файл-контроллер index.php:

require ('templates/authorize.php');
require ('lib/out.php');    

if(!empty($_GET['action']) && $_GET['action'] == 'out') out();     
//если передана переменная action, то разавторизуем пользователя

if(isLogin($link)){                 //если юзер уже авторизован
$UID = $_SESSION['id'];
$admin = isAdmin($UID, $link);  //определяем, админ ли юзер

}else{                              //если была нажата кнопка Вход
if(isset($_POST['enter'])){
    $error = enter($link);   //ф-ия входа на сайт
    if(count($error) == 0){  //если нет ошибок авторизации, то авторизуем юзера
            $UID = $_SESSION['id'];
            $admin = isAdmin($UID, $link); //определяем, админ ли юзер

            if($admin) {
                header('Location: ./templates/admin.php');
                exit();
            }else {
                header('Location: table/index.html');
                exit();
            }
    }else {
        $admin = false;
        echo $error[0];
    }
}

}

Есть форма авторизации в файле authorize.php:

<?php
    if(empty($UID))
    {
?>
<form method="POST">
    Логин: <input id="login" type="text" name="login"/><br/>
    Пароль: <input id="password" type="password" name="password"><br/>
    <button type="submit" name="enter">Войти</button>
</form>
<a href="../../index.php?action=out">Выход</a>
<?
}
?>

И есть файл out.php:

<?php
function out() {
$id = $_SESSION['id'];
    unset($_SESSION['id']);     //удаляем переменную сессии
    setCookie('login', '', time()-3600, '/');     //удаляем куку с логином
    setCookie('password', '', time()-3600, '/');  //удаляем куку с паролем
    session_destroy();
    header('Location: http://'.$_SERVER['HTTP_HOST'].'/index.php');  //редирект на главную страницу
}

После ввода юзером логина и пароля они записываются в куки методом setCookie('login', 'username', time()+1000, '/'), аналогично пассворд, которые при переходе по страницам сайта проверяются и время сессии обновляется. Также нужно удалять куки при разлогинивании: setCookie('login', '', time()-1000, '/'); Но установка кук получается идёт после вывода формы авторизации (иначе как их получишь для записи в куку?), поэтому setCookie выдает "Cannot modify header information - headers already sent by... [5 строка файла с формой]".

При этом при локальной разработке всё работало, проблема появилась при переносе на реальный хостинг. Каким образом можно это решить?


Ответы (1 шт):

Автор решения: Sage

Решено переносом подключения (require) шаблонов с формами в конец php скриптов, после кода. Спасибо тов. Ein.

→ Ссылка