header error - headers already sent

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
alexinio3d
Mesaje:96

header error - headers already sent

Ce sa fac sa nu-mi mai dea urmatoarea eroare ?

Cod: Selectaţi tot

[27-Jun-2013 14:22:07 UTC] PHP Warning:  Cannot modify header information - headers already sent by (output started at /home/x15black/public_html/treisute.ro/template/header.php:21) in /home/x15black/public_html/treisute.ro/template/conectare.php on line 4
Acesta ii codu care contine linia 4 :

Cod: Selectaţi tot

if(isset($_SESSION['user'])){
    header('Location: /index.php');
    exit;
} 
Siteuri create / configurate de mine :
SilvoProject.Ro ( Magazin Online ) : SilvoProject.Ro
TreiSute.Ro ( Comunitate de gaming ) : TreiSute.Ro

MarPlo Mesaje:4343
Salut
Functia header() nu se poate folosi daca inainte de ea ai date transmise catre browser (cum e si la session_start(), sau setcookie() ).
Dupa cum se intelege din mesajul de eroare, inainte de codul cu header() la linia 4, e inclus fisierul "header.php", care la linia 21 trimite date catre browser.
Ca sa nu mai afiseze mesajul de eroare, adica sa-l ignore caci el tot exista, poti adauga acest caracter " @ " inaintea functiei.
Exemplu:

Cod: Selectaţi tot

@header('Location: /index.php'); 
In documentatia PHP e specificat la header:
Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include, or require, functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.

alexinio3d Mesaje:96
am incercaqt sa fac cum miai zis dar nu imi merge.
nu ma trimite pe pagina index.php
Siteuri create / configurate de mine :
SilvoProject.Ro ( Magazin Online ) : SilvoProject.Ro
TreiSute.Ro ( Comunitate de gaming ) : TreiSute.Ro

MarPlo Mesaje:4343
Chiar daca eroarea nu mai este afisata, ea exista, prin urmare acea functie header() nu se poate executa datorita motivului erorii, explicat mai sus.
Incearca sa adaugi acel header inainte de a include fisierul care trimite date de iesire la browser; asta daca logica script-ului permite.
Alta solutie nu stiu. Trebuie gandit si construit scriptul astfel incat sa se evite erorile de acest gen.