Warning: Cannot modify header information...

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

Avatar utilizator
sunsolaris
PHPRomania Supporter
Mesaje: 7
Membru din: Vin Iun 07, 2013 6:03 pm

Warning: Cannot modify header information...

Mesajde sunsolaris » Mar Iul 08, 2014 3:13 pm

(in WAMP mi-a mers,pe net nu merge)

Warning: Cannot modify header information - headers already sent by (output started at /home/u506537884/public_html/mituri.php:154) in /home/u506537884/public_html/comentarii/blank.php on line 22


Structura in Home e asa:
folder1, folder2, folder_comentarii,folder4,....
fisier1.php,fisier2.html,mituri.php,....

In mituri.php am:

....................

Cod: Selectaţi tot

<?php(linia 154)
      require 'comentarii/blank.php';
      require 'comentarii/displayCom.php';
   ?>

....................

In blank.php:

Cod: Selectaţi tot

<?php
// Report all errors except E_NOTICE
error_reporting(E_ALL ^ E_NOTICE);

require('conectare.php');

//preiau datele din formular
$name=$_POST['name'];
$comment=$_POST['comment'];
$submit=$_POST['submit'];

if($submit){
   if($name && $comment){
      $insert = mysql_query("INSERT INTO comment(name,comment) VALUES('$name','$comment')");
      
      /*Daca nu pun header catre ceva(eu vreau catre aceeasi pagina aici),
      se mai face inca o data inserarea ultimului comentariu in Baza de Date
      si se afiseaza inca o data in mituri.php daca dau refresh la pagina;
      si tot asa la fiecare REFRESH de pagina. In WAMP a mers cu header, aici se intampla aceeasi problema.
                Cred ca nu stiu sa-i dau bine calea la [i]mituri.php[/i]*/
       header('Locaton: ../mituri.php');(linia 22)
      }
}

?>


(html)
formularul cu campurile NUME, COMENTARIU, butonul de trimitere(catre mituri.php)
(/html)

In displayCom.php:
se afiseaza comentariile



evolution
Average Member
Mesaje: 118
Membru din: Lun Noi 06, 2006 8:04 pm

Re: Warning: Cannot modify header information...

Mesajde evolution » Dum Aug 03, 2014 8:41 am

Headerele trebuie trimise inainte de orice output HTML.

1. Foloseste ob_start si ob_end_flush
Daca ai codul care seteaza headere ( ex. header: location: ..) inainte de DOCTYPE (inainte de a incepe codul HTML), pune :

Cod: Selectaţi tot

<?php ob_start(); ?>
..
// include database connection
..
php if .. header:location ..

<?php ob_end_flush() ;?>
<!doctype html>
<html lang="en">
<head>



2. Daca ai codul de redirect inauntrul codului HTML, poti folosi

Cod: Selectaţi tot

<META http-equiv="refresh" content="0;URL=http://www.siteulmeu.ro/pagina-dorita.html">

Avatar utilizator
artur99
Average Member
Mesaje: 55
Membru din: Joi Ian 10, 2013 9:00 pm
Contact:

Re: Warning: Cannot modify header information...

Mesajde artur99 » Dum Aug 17, 2014 9:15 pm

evolution scrie:Headerele trebuie trimise inainte de orice output HTML.

1. Foloseste ob_start si ob_end_flush
Daca ai codul care seteaza headere ( ex. header: location: ..) inainte de DOCTYPE (inainte de a incepe codul HTML), pune :

Cod: Selectaţi tot

<?php ob_start(); ?>
..
// include database connection
..
php if .. header:location ..

<?php ob_end_flush() ;?>
<!doctype html>
<html lang="en">
<head>



2. Daca ai codul de redirect inauntrul codului HTML, poti folosi

Cod: Selectaţi tot

<META http-equiv="refresh" content="0;URL=http://www.siteulmeu.ro/pagina-dorita.html">


Metoda 2 nu este valida daca codul s-ar afla in <body>
Eu as fi mers pe js:

Cod: Selectaţi tot

function jsredirect($url){
echo '<script>window.location="'.$url.'";</script>'
}
//in cazul in care vrei sa faci redirect faci call la functie
jsredirect("pagina.php");


Si asta va functiona si inafara tag-ului <html>

emanue1
PHPRomania Supporter
Mesaje: 12
Membru din: Joi Iun 05, 2014 1:16 pm

Re: Warning: Cannot modify header information...

Mesajde emanue1 » Mar Aug 19, 2014 1:16 pm

De fapt, varianta corecta este cea cu folosirea output buffer-ului.
Sau schimbi logica astfel incat sa ai redirect-ul inainte de a afisa ceva in pagina.

Variantele cu meta sau javascript sunt complet gresite in acest context.

Avatar utilizator
artur99
Average Member
Mesaje: 55
Membru din: Joi Ian 10, 2013 9:00 pm
Contact:

Re: Warning: Cannot modify header information...

Mesajde artur99 » Mar Aug 19, 2014 10:16 pm

emanue1 scrie:De fapt, varianta corecta este cea cu folosirea output buffer-ului.
Sau schimbi logica astfel incat sa ai redirect-ul inainte de a afisa ceva in pagina.

Variantele cu meta sau javascript sunt complet gresite in acest context.

hmm... da, ai dreptate... :D s-ar putea lua sursa daca ar fi cu js/html :D

sirlucas
New Member
Mesaje: 4
Membru din: Joi Aug 16, 2007 2:06 pm
Localitate: Dublin
Contact:

Re: Warning: Cannot modify header information...

Mesajde sirlucas » Joi Oct 23, 2014 6:02 pm

Pro tip of the day: nu mai închide blocul php cu ?>

Reason: când faci include/require la astfel de fișiere și există posibilitatea ulterioară să faci header/redirect... dacă ai scăpat un simplu spațiu sau [enter] după ?> ... atunci interpretorul se va plânge mereu că "headers have been sent" și eroare.

alexe
Average Member
Mesaje: 60
Membru din: Vin Sep 14, 2012 3:45 pm

Re: Warning: Cannot modify header information...

Mesajde alexe » Vin Oct 24, 2014 8:46 am

Eu mai pateam aceasta problema si o rezolvam mutand header deasupra incarcarii altor fisiere deoarece mai puneam poate in alt fisier un header() care se batea cap in cap si apoi imi aparea eroarea.

Incearca sa modifici codul incat inainte sa de redirect sa nu ai nici un header scris inca o data, altfel se vor bate cap in cap. ( asta in cazul acela daca ai in ceva fisier cu care il unesti un header() )


Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 58 vizitatori