[PHP]Warning: Cannot modify header information

Witam,

mam dziwny błąd przy próbie wywołania funkcji headers.

A mianowicie mam prosty skrypt:

<?php

header("Location: http://www.wp.pl/"); 

exit;

?>

, a zwraca on błąd:

Warning: Cannot modify header information - headers already sent by (output started at /var/www/plik.php:1) in /var/www/plik.php on line 2

Co może być nie tak?

Pozdrawiam.

A po co ten “exit”? Co się stanie jak go usuniesz?

Najwyraźniej wywołujesz ten skrypt ze strony/skryptu który w kodzie zawiera już nagłówek strony i dlatego dostajesz komunikat że nie można zmodyfikować nagłówka który już został wysłany.

Ew. popraw kodowanie pliku na UTF-8 normalne a nie bez DOM.

Gdzie masz umieszczoną tą instrukcję?

Powinna być przed < Doctype…>

Wiesz co piszesz? Jeżeli wysyła się nagłówki przekierowujące, to nie wysyła się html’a.

Nie “DOM”, tylko “BOM”. http://en.wikipedia.org/wiki/Byte_order_mark

Innymi słowy: zapisz jako tekst w ASCII a nie UTF-8.

@etam

albo jako UTF-8 bez BOM

Wiesz co piszesz? Jeżeli tak, to wyjaśnij proszę dlaczego?

Nic nie stoi na przeszkodzie by do istniejącej strony dodać przekierowanie w nagłówku nie naruszając przy tym treści tej strony, ale:

  1. kod przekierowania musi być na samym początku! …i od tego jest exit po headerze by z chwilą wysłania nagłówka przerwać dalsze przetwarzanie skryptu (czyli po exicie może być sobie nawet cała trylogia, to nie ma znaczenia.)

  2. kod takiego przekierowania może być wpleciony w kod strony, może się nawet znajdować na samym końcu, jednak wtedy cała strona winna zostać zbuforowania.

a tak na marginesie, temat do działu webmastering a nie programowanie :wink:

Wyobraź sobie, że wiem co piszę bo czasami można używać alternatywnie także na stronie html i używam(mam nadzieję, że nie jest zabronione) np. gdyby osoba z Twoim IP nie była mile widziana na mojej stronie, no to ją przekierowuję na NasząKlasę. :slight_smile:

Inny przykład: Czasami, gdy zmieniamy adres witryny, to pod starym adresem pozostawiamy tylko informację o zmianie adresu i po kliknięciu przekierowujemy na nowy adres.

Przepraszam, macie rację. Wysłanie html’a po nagłówku przekierowania nie jest błędem, aczkolwiek jest to co najmniej bez sensu (bo po co wysyłać treść, która nie zostanie wyświetlona?).