[PHP]Warning: Cannot modify header information


(Oski225) #1

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.


(etam) #2

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


(scripter1) #3

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.


(GioWDS) #4

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


(floyd) #5

Gdzie masz umieszczoną tą instrukcję?

Powinna być przed < Doctype......>


(etam) #6

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.


(Jim1961) #7

@etam

albo jako UTF-8 bez BOM


(Sitemaster) #8

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:


(floyd) #9

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.


(etam) #10

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?).