Quest ce que cette Erreur (Header) signifie ?

[Résolu]
Signaler
Messages postés
239
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
1 juillet 2007
-
Messages postés
239
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
1 juillet 2007
-
Bonjour a tous !

quest ce que cette erreur ? et quest ce que ca signifie ??

Warning: Cannot modify header information - headers already sent by (output started at /home/oxygenb/public_html/demo/config.php:9) in /home/oxygenb/public_html/demo/verif.php on line 22

----------
Voici le script :
-------

<?php
session_start();
include("config.php");
$pseudo = $_POST["pseudo"];
$motdepasse = $_POST["motdepasse"];
@mysql_pconnect($BD_serveur, $BD_utilisateur, $BD_motDePasse)
or die("Impossible de se connecter au serveur de bases de données.");
@mysql_select_db($BD_base)
or die("Impossible de se connecter à la base de données.");
$requete = "SELECT * FROM membres ".
" WHERE pseudo='$pseudo' AND motdepasse='$motdepasse'";
$result = @mysql_query($requete);
if ($enreg = @mysql_fetch_array($result)) {
// Si une ligne a été trouvée c'est que le couple
// (identifant, mot de passe) est valide
$_SESSION["membre"] = TRUE;
$_SESSION["membreid"] = $pseudo;
header("Location: mon_compte.php");
die();
} else {
$_SESSION["membre"] = FALSE;
header("Location: compte_invalide.php"); // Ligne 22
die();
}
?>

javoue que je comprend pas tres bien pk il me fait ca ???

11 réponses

Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Voilà... t'as tout compris!



Je préfère les devinettes aux réponses toutes cuites. Mais comme tu t'es creusé la nenette, je vais tout te dire :



Ce qu'il faut savoir :

*Tout ce qui est en dehors des <?php ?> est considéré comme de l'HTML et donc envoyé tel-quel à ton navigateur.

*On n'envoi pas du HTML sans expliquer que c'est du HTML. Donc avant d'envoyer le
retour de ligne, il envoi une entête ("header") dans laquelle se trouve
des trucs du genre "type d'encodage, de quelle page HTML il s'agit,
...". D'où l'erreur "header already send".

*session_start ajoute une information dans l'entête de la page HTML :
"donne moi l'identifiant de session". Qui servira à identifier
l'utilisateur pour retrouver ces variables personnelles

*A l'intérieur des <?php ?> les carctères blancs (espace, tab et
retour ligne) sont tous simplement oublié par l'analyseur de script PHP.



A partir de là, tout est claire :

cas 1 :

Bon là pas de doute, session_start est au début car <? est le premier truc de la page.



cas 2 :

Il y'a un saut de ligne avant <?php, donc ton analyseur envoi un
caractère au navigateur. Et comme il envoi un caractère, il jete un
header avant pour bien se faire comprendre par le navigateur



cas 3 :

Tu l'a deviné, c'est pareil pour un espace



cas 4 :

Un peu plus chaud, ob_start() fait de la rétention d'information !!!
Donc tu peux balancer tout dans le désordre (HTML, header) et quand la
commande "flush" arrive (flush = balance tout). L'analyseur PHP fait le
tri dans ton bordel, remet tout en place et envoi la purée. Donc c'est
bon.



Bref la solution était : " enlève le saut de ligne au début de ton
script". Mais maintenant tu en sais plus... Et c'est meiux, non?



A+
Messages postés
239
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
1 juillet 2007

Re les gars ! ca fait un an et demi que je connais ce language ! et j'ai toujours eu cette merde !


franchement apres plusieurs essai avec vos conseille ! lerreur est tjs presente! ca ma peter la tete serieux !!


c comme le javascript ! ca chiale pour rien !
et dans mon script ya un include qui amene a la partie config !


et ben devinez quoi ! monsieur le php né pas content ! et je suis obliger de copier coller mon fichier config et linserer dans la source et enlever linclude ! et la ca marche impec !
incroyable ces bugs chinois la !

pfff ! si vous avez des soluce pour faire un requiere ou include ou un truc de ce genre ou je pe mettre mes passes ! ca serai super !

@bientot ;)
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Salut,



Erreur classique, oh combien classique...



session_start() doit être placée au tout tout tout début de ton script.

Je te laisse te casser le crâne sur ces exemples (le trait signifie le sommet de ton script) :

_________________ cas n°1 : OK

<?

session_start()

/* blablabla */

?>



_________________ cas n°2 : NON !!!



<?


session_start()


/* blablabla */


?>



_________________ cas n°3 : NoooooN !!!! (un peux plus subtil là)

<?


session_start()


/* blablabla */


?>

_________________ cas n°4 : OK

<?ob_start()?>

trucs choses et tout et tout...

<?

/* tralalalalalalala */

session_start()


/* blablabla */

ob_end_flsuh();

?>





A+
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Salut,



ce message d'erreur étant le plus courant, je te laisse faire une recherche dans le forum.

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
239
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
1 juillet 2007

J'ai compris que dalle ! merci quand meme de ta reponse ! parce que franhcement entre le cas 1 et 2 ! c'est le meme ! je cherche juste une reponse ! c tous ! jai cherché dans le forum avant de posté et je suis sur ce truc depuis ce matin...

javoue que je ne trouve pas...

que dois je faire exactement ???

_________________ cas n°1 : OK
<?
session_start()
/* blablabla */
?>

_________________ cas n°2 : NON !!!

<?
session_start()
/* blablabla */
?>

c le meme serieux !
ha moins que tu veux faire la nuance avec le trait en haut qui colle et qui colle pas !
regarde l'image en bas ( le lien ) ! il sot tous a fait bien coller

http://rech151.free.fr/session.JPG

@ +++
;)
Messages postés
239
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
1 juillet 2007

ha oui ton troisieme cas c un espace avec ton <?

pour info ! :)
Messages postés
258
Date d'inscription
samedi 25 décembre 2004
Statut
Membre
Dernière intervention
13 novembre 2012

Session start ne prend pas un " ; "??

_______________________
<?
session_sart();
?>

Jn
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Parse error, expecting ',' or ';' line 1 ;-)
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Jamais eu de problème avec monsieur PHP. On est en très bon rapport
tout les deux : quand il a un souci, il me le dit clairement et je
règle le problème.



Après un an et demi, je suis surpris ! vous n'êtes peut-être pas fais l'un pour l'aute...
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
En plus il est loin d'être rigouriste !



(par contre javascript, je te l'accorde, est un peu plus galère et c'est franchement la cacophonie entre IE et Netscape)
Messages postés
239
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
1 juillet 2007

je connais bien le php mais le hic c'est que je l'utilise tres rarement.. je ne fais que le regarder et l'admirer! c'est tous...
quand jai besoin de lui ! la plupart du temps il m'emmerde ! :) si je puis je dire ;)
loool

aller a bientot :!! +++