Headers already sent

при создании авторизации на сайте:

Warning: Cannot modify header information - headers already sent by (output started at C:\OSPanel\domains\NewProject.ru\register\connect.php:5) in C:\OSPanel\domains\NewProject.ru\index.php on line 26

Вот мой php код

<?
require "register/rb.php";
require "register/connect.php"
?>
        <?php
        $data = $_POST;
        if (isset($data['go-login'])) {
            $error = array();
            $user = R::FindOne('users', 'login = ?', array($data['login']));
            if ($user) {
                if (md5($data['password']) == $user->password) {
                    $_SESSION['login'] = $user;
                } else {
                    $error[] = 'Неверный пароль!';
                }
                } else {
                    $error[] = 'Мы не нашли такого пользователя';
                }
            }
         if (!empty($error)) {
             echo array_shift($error);
         }
     ?> 
        <?
            if (isset($_SESSION['login'])) {
                header('location:/dashboard');
            };  
             ?>

Это единственный файл где отправляется header. Подскажите в чем причина?


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

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

Любой текст, который есть в php-файле, отправляется с заголовками (headers), поэтому перед началом php кола в тегах <? ... ?> не должно быть ничего, в том числе лишних пробелов.

→ Ссылка
Автор решения: Трудных

Нужно заменить блок кода

<?
require "register/rb.php";
require "register/connect.php"
?>
        <?php
        $data = $_POST;

на

<?
require "register/rb.php";
require "register/connect.php"
        $data = $_POST;

так как работа PHP-интерпретатора заканчивается на закрытии тега ?> - все остальное текст

→ Ссылка