slogin.info

ihc 468x60 1 1
Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда не активна4 / 5
 
Автор: Администратор
Просмотров: 32449
Теги: php, header, error, setcookie

В этой статье мы рассмотрим основные причины и решения возникновения ошибки "Невозможно изменить заголовки - т.к. они уже были отправлены"("Cannot modify header information - headers already sent by").

 Что означает эта ошибка?

Чтобы разобраться с причинами возникновения ошибки, нужно сначала разобраться с тем, что такое эти "заголовки".

Не будем углубляться в теорию. Скажем лишь, что перед тем как любой пользователь открывает веб-страницу, ему посылаются эти самые "заголовки", которые содержат в себе кодировку, язык сайта, данные о сервере и прочую служебную информацию. Стоит так же отдельно добавить, что куки и сессия так же отправляются в заголовках.

Какие команды вызывают эту ошибку?

Ошибку "Cannot modify header information - headers already sent by" могут вызывать такие PHP-команды, как header, setcookie и другие, связанные с работой куки или сессий.

Причины и решения возникновения ошибки.

Самая частая ошибка происходит из-за не опытности. Мы уже разобрались, что заголовки отправляются до того, как начинает загружаться сама страница. 

Но программисты, особенно начинающие попросту забывают или даже не знают этого. И сначала пытаются что-то вывести на странице - чаще всего при помощи команды echo, а потом устанавливают куки, посылают заголовки и т.д. Что приводит как раз к этой ошибке.

Вот пример кода, который приведет к такой ошибке:

<?php
	echo "Hello, World!";
	header("Content-Type: text/html; charset=windows-1251");
?>

А вот правильный вариант:

<?php
    header("Content-Type: text/html; charset=windows-1251");
	echo "Hello, World!";
?>

Т.е., во-первых, нельзя ничего выводить до отправки заголовков!

Не всегда это очевидно, но есть ошибка с небольшим различием. Это когда php-документ у вас начинается с пробелов или пустых строк, что подразумевает вывод в браузере этих строк.

За этим бывает очень сложно следить, так как например Windows блокнок может добавить вначале Byte Order Mark, никак нас не предупредив и даже не показывая этот символ. В этом случае стоит открыть документ при помощи других редакторов и проверить.

Вот пример по неправильному заданию заголовков:

   <?php
    header("Content-Type: text/html; charset=windows-1251");
	echo "Hello, World!";
?>

Т.е., во-вторых, перед <?php не должно быть пустых строк или даже пробелов.

Особо внимательным стоит быть, если вы используете команду include, по сути она объединяет все файлы и делает один результирующий, и если вы сначала подключили шапку сайта(слайдер, меню и т.д.) а потом в основном файле пытаетесь отправить заголовки, то у вас конечно вылезет эта ошибка.

Вот пример такого неправильного кода:

<?php
	include("header.php");
	header("Content-Type: text/html; charset=windows-1251");
?>

а вот файл header.php

<?php
	echo "<h3>Добро пожаловать на сайт</h3>";
?>

Добавить комментарий

Авторизоваться с помощью:

     


Защитный код
Обновить

Поиск по сайту

Топ 10 активных пользователей

  • Имя пользователя Баллы
  • gawk
    44.20
  • hr@proovelab
    15.00
  • ZOMRO
    6.40
  • intuit89
    6.00
  • Varvarka
    4.00
  • Akyla58
    3.00
  • AnnaOl
    3.00
  • dimasik_3557
    3.00
  • ErcardSa
    3.00
  • Galinamuh
    3.00
 

Рекламные ссылки

IHC

Пожертвования

icon donate

Yandex.Money: 410011571748395

Webmoney:

R362907776401 (Рубли)

Z410919458006 (Доллары)

ihc 468x60 1 1

Похожие материалы

Языки программирования сайтов

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

Теги:

css, html, javascript, php, веб

Комментариев: 0 Подробнее
Простая форма обратной связи своими руками.

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

Теги:

php, form, simple, форма, send

Комментариев: 0 Подробнее
Как написать скрипт для проведения собственного тестирования на PHP?

В этой статье речь пойдет о реализации простого тестирования при помощи PHP.

Теги:

php, тестирование, test, скрипт

Комментариев: 0 Подробнее
Как подключиться к Microsoft SQL Server через PHP

В этой статье мы расскажем о всех тонкостях подключения к MS SQL серверу, для работы с ним через PHP.

Теги:

php, Microsoft, SQL, Server, driver

Комментариев: 0 Подробнее

Последнее с форума

ZOMRO аватар
Домен — это неотъемлемая часть бизнеса, которая также влияет на поисковую систему. Признаки доменно...
Перейти в тему
ZOMRO аватар
На что ориентироваться при выборе хостинга? Функционал и количество ресурсов. Выбираем те параметр...
Перейти в тему
ZOMRO аватар
Красивое имя для сайта или регистрация доменных имен. Заказав у нас услугу хостинга или VDS/VPS, Вы ...
Перейти в тему

Последние статьи

Javascript функции

Функции - одна из основных концепций языка JavaScript. При этом есть кардинальное отличие от многих языков программирования, в JS каждая функция сама по себе является объектом, а соответственно и манипулировать с ней можно разными способами:

Ссылка на телефон

В этой статье мы рассмотрим простой и обычный способ создания ссылки на телефон.

CPA сети 30.01.2017
CPA сети

Сегодня мы подробно рассмотрим тему зарабатка на своих проектах (т.е. это не обязательно сайты) при помощи CPA сетей.