Cannot modify header information - headers already sent (...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Cannot modify header information - headers already sent (...

Re: Cannot modify header information - headers already sent (...

par sylvaing26 » 26 août 2010, 09:32

Avec ça, ça devrait le faire :-)
Je l'espère.
Reviens nous voir en cas de soucis :wink:

Re: Cannot modify header information - headers already sent (...

par sylvaing26 » 26 août 2010, 09:31

C'est quoi qui est écrit ? xD
Hein keki di ? :boire4:

Re: Cannot modify header information - headers already sent (...

par Z » 25 août 2010, 12:55

Ah génial, je suis sous Notepad++ justement, mais j'avais pas vu le coup de l'encodage :-)
J'ai retrouvé "UTF8 (sans BOM)" dans Format -> Encoder en UTF8 (sans BOM) ou encore Format -> Convertir en UTF8 (sans BOM).

Avec ça, ça devrait le faire :-)

Merci !!

Z

Re: Cannot modify header information - headers already sent (...

par AoSiX » 25 août 2010, 12:20

Une erreur très classique est de lire un fichier avec include() ou require(), et de laisser des espaces ou des lignes vides, qui produiront un affichage avant que la fonction header() ne soit appelée. Le même problème existe avec les fichiers PHP/HTML standards.
C'est quoi qui est écrit ? xD

Re: Cannot modify header information - headers already sent (...

par sylvaing26 » 25 août 2010, 11:45

Moi ce que je fait, je développe mes scripts PHP avec Notepad2
Pour un script en UTF-8 je vais dans File->Encoding->UTF-8

Sinon en francais qui est pas mal tu as Notepad++
Tu vas dans Encodage -> Encoder en UTF-8 (sans BOM) !

Re: Cannot modify header information - headers already sent (...

par Z » 25 août 2010, 11:42

Ah, yes... merci.
Et comment on fait pour voir s'il n'y en a pas ? les entêtes de fichiers ? (je crois qu'on peut les voir sous Linux mais sous Windows.... oups...)

Z

Re: Cannot modify header information - headers already sent (...

par sylvaing26 » 25 août 2010, 11:39

c'est quoi "BOM" :-) ?
BOM c'est Marque d'Ordre des Octets

Re: Cannot modify header information - headers already sent (...

par Z » 25 août 2010, 11:30

Merci Sylvaing26, oué, je vais essayer ça.
@Berzemus : c'est quoi "BOM" :-) ?

++

Z

Re: Cannot modify header information - headers already sent (...

par sylvaing26 » 25 août 2010, 11:20

Et si tu enlèves ", true" dans ton header ca marcherai pas sinon ?
Après ba ya la methode brute si ca t'agace cette erreur, tu supprime cette partie (à condition que le reste marche quand même) :
elseif(PRINT_ERROR) trigger_error("Invalid array parameter type on class XPertMailer->headers()", 1024);

Re: Cannot modify header information - headers already sent (...

par Berzemus » 25 août 2010, 11:19

Tout tes fichiers sont bien en UTF8 sans BOM ?

Re: Cannot modify header information - headers already sent (...

par Z » 25 août 2010, 10:14

Hello !

Arf... personne n'aurait une p'tite idée de la chose ?
A part l'envoi du header qui ne passait pas (et qui passe maintenant), je n'ai pas d'autre explication...

++ !

Z

Re: Cannot modify header information - headers already sent (...

par Z » 23 août 2010, 18:10

Ceci :
	function headers($arrh){

		if(is_array($arrh) && count($arrh) > 0){
			$rebh = array();
			foreach($arrh as $numh => $valh){
				if(is_string($numh) && is_string($valh) && !empty($numh) && !empty($valh)){
					if(isset($rebh[$numh]) && PRINT_ERROR) trigger_error("Duplicate array key on class XPertMailer->headers()", 1024);
					$rebh[$numh] = $valh;
				}elseif(PRINT_ERROR) trigger_error("Invalid array parameter type on class XPertMailer->headers()", 1024);
			}
			$this->_setarrh = $rebh;
		}elseif(PRINT_ERROR) trigger_error("Invalid parameter type on class XPertMailer->headers()", 512); // <--- ligne 154

	}
Meeerciii !
Z

Re: Cannot modify header information - headers already sent (...

par sylvaing26 » 23 août 2010, 17:12

Tu as quoi dans ton fichier XPertMailer.php à la ligne 154 (avant et après)?

Code : Tout sélectionner

/var/www/meeddm/biodiversite2010/n+1/www/prive/ac/XPertMailer.php on line 154

Re: Cannot modify header information - headers already sent (...

par Z » 23 août 2010, 16:47

Re,

Vi vi, merci Sylvaing26 !
J'en étais resté à la proscription de tout "echo" ou dans le même genre avant une entete, mais ne savais pas que même un espace dans le code pouvait produire le même effet.
En effet, cela fonctionne, sur cet aspect.

Reste néanmoins un message que je croyais lié :

Code : Tout sélectionner

Warning: Invalid parameter type on class XPertMailer->headers() in /var/www/meeddm/biodiversite2010/n+1/www/prive/ac/XPertMailer.php on line 154
XPerMailer étant une classe existante permettant l'envoi de mails. Je pensais que le header fourni en argument correspondait justement à celui qui ne passait pas :
<?php header('Content-type: text/html; charset=UTF-8', true); ?>

Mais ce n'est peut-être pas ça...
Ca va être un peu plus complexe à débugger....

Merci en tout cas !
Z

Re: Cannot modify header information - headers already sent (...

par sylvaing26 » 23 août 2010, 15:36

Une erreur très classique est de lire un fichier avec include() ou require(), et de laisser des espaces ou des lignes vides, qui produiront un affichage avant que la fonction header() ne soit appelée. Le même problème existe avec les fichiers PHP/HTML standards.