[PHP] Problem z przekierowaniem header


(michm4) #1

Witam

Mam problem bo muszę zrobić przekierowanie php i wyskakuj mi błąd

Warning: Cannot modify header information - headers already sent by (output started at /home/yyy/domains/xxx/public_html/xxx/index.php:10) in /home/xxx/domains/yyy/public_html/xxx/index.php on line 12

if($_GET['logout'] == 'yes') {

echo 'Zostales wylogowany';

session_destroy();

header("Location: index.php");

}

12 linijka to

header("Location: index.php");

Wie ktoś dla czego ?


(Pablo_Wawa) #2

Przecież przed tym kodem header() w PHP masz wyświetlanie tekstu - a to jest niedozwolone! Poczytaj o funkcji header()


(felixik) #3

daj przed tekstem ob_start(); i sprawę to rozwiąże


(batmomobil) #4

W php jestem jeszcze laikiem,ale spróbuj tak:

<?php session_start();																											

if($_GET['logout'] == 'yes') 

{

session_destroy();

echo "wylogowale¶ się";

}

else

{

echo "nie wylogowale¶ się ?";

}

header('Location: index.php');?>

(Damgora) #5

batmomobil , problem właściwie opisał Pablo_Wawa - nie można wysyłać nagłówków po wysłaniu czegokolwiek na wyjście. Zazwyczaj wystarczyłoby przenieść echo za header(), ale w sytuacji, w której ma nastąpić przekierowanie można je po prostu usunąć...


(pain3hp) #6

załamka...

Dowiedz sie co to jest protokół HTTP bo z tym masz problem


(Pablo_Wawa) #7

Mówiąc krótko, najpierw PHP wysyła header (nagłówek strony), a dopiero potem jej treść (bo nagłówek ma wpływ na wyświetlenie treści strony - choćby kodowanie).

Zatem nie możesz używać komendy echo a potem wysyłać header! Zdecyduj się i napisz nowy plik .php, w którym będzie stosowny komunikat i w headerze daj przekierowanie do niego.

Albo lepiej ustawiaj sobie jakaś zmienną sesyjną i w pliku index.php sprawdzaj ją i wyświetlaj stosowny komunikat (a jak nie jest ustawiona, to nic - sytuacja startowa).