Почему не работает header()? [дубликат]

156
14 мая 2018, 22:30

На данный вопрос уже ответили:

  • Cannot modify header information - headers already sent by 3 ответа
<?
mysql_connect('localhost', 'root', '');
mysql_select_db('blog');
if(isset($_POST['submit']))
{
    if(!empty($_POST['username']) && !empty($_POST['password']))
    {
        $username = htmlspecialchars($_POST['username']);
        $password = htmlspecialchars($_POST['password']);
        $id = mysql_query("SELECT `id` FROM `users`");
        $query = mysql_query("SELECT * FROM `users` WHERE username='".$username."' AND password='".$password."'");
        $user = mysql_fetch_array($query);
        if(!empty($user))
        {
            session_start();

            $_SESSION['username'] = $username;
            $_SESSION['email'] = $email;
            echo('Вы успешно авторизовались ');
            echo($id);
            header('Location: http://blog.pro/profile');
        }
        else
        {
            echo('Имя пользователя или пароль указаны неправильно');
        }
    }
    else
    {
        echo('Заполните все поля');
    }
}
?>

Выдает ошибку

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\blog.pro\www\login.php:23) in Z:\home\blog.pro\www\login.php on line 25

Answer 1

Перед использованием функции header() не должно быть вывода информации.

Помните, что функцию header() можно вызывать только если клиенту еще не передавались данные. То есть она должна идти первой в выводе, перед ее вызовом не должно быть никаких HTML-тегов, пустых строк и т.п. Довольно часто возникает ошибка, когда при чтении кода файловыми функциями, вроде include или require, в этом коде попадаются пробелы или пустые строки, которые выводятся до вызова header(). Те же проблемы могут возникать и при использовании PHP/HTML в одном файле.

Если будет вывод информации перед использованием функции header(), тогда будет выдана ошибка

Warning: Cannot modify header information - headers already sent by (output started at ...) in ... on line ...

Вам нужно убрать вывод информации:

$_SESSION['username'] = $username;
$_SESSION['email'] = $email;
//echo('Вы успешно авторизовались ');
//echo($id);
header('Location: http://blog.pro/profile');
READ ALSO
migration magento. Problem with css/js

migration magento. Problem with css/js

Всем приветМигрировал magento на 2рую версию

176
Замена темы на работающем сайте

Замена темы на работающем сайте

Всем привет подскажите как правильно выполнить замену темы на работающем новостном портале, меня интересует именно логика действий так...

224
Помогите php + mysql

Помогите php + mysql

Есть php скрипт, он создает новую строку с данными в базе данных, но id новых строк 0Не могу разобраться почему?

130