IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

erreur "header information - headers already sent by"


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 18
    Par défaut erreur "header information - headers already sent by"
    bonjour,

    voilà j'aimerais avoir un éclaircissement...
    j'ai en gros un formulaire html sur une page qui renvoie sur la même page lors de la validation du formulaire, mais juste avant le formulaire je fais un include vers un fichier vers lequel il y a le traitement du formulaire en php...

    dans ce fichier de traitement php, je finis avec un header(....) renvoyant vers la page d'accueil de mon site.

    en local tout fonctionnait bien, mais depuis la mise en ligne du site sur mon compte perso free, j'ai une erreur lors de la validation du formulaire, tout le traitement se fait bien, seulement c'est la redirection de la page qui pose problème et donc ce header !

    voilà le type d'erreur que j'ai à chaque redirection :


    Warning: Cannot modify header information - headers already sent by (output started at /mnt/136/sda/1/8/site/parametres.php:10) in /mnt/136/sda/1/8/site/include/verif_parametres.php on line 402

    la ligne 402 correspond bien à la fonction header()

    la synthaxe est bonne je le sais, donc je ne compred pas l'erreur, j'ai cherché sur le net, il parle d'espace après la balise php, toujours pas de problème de côté là tout est bon...

    quelqu'un aurait-il une solution ??

    merci d'avance :!

  2. #2
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,
    Citation Envoyé par jman94
    espace après la balise php
    Il ne doit y avoir aucun caractère AVANT la balise PHP.

    Utilises-tu les sessions ?

    Si oui... As-tu créé le répertoire sessions à la racine du site ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 18
    Par défaut
    bonjour,

    oui il n'y a rien comme caractère avant la balise, ni après !

    non je n'utilises pas de sessions :s

  4. #4
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Même pas un petit echo ou print balladeur ?

    L'encodage du fichier est-il en UTF-8 ?

    Si oui... Il faut s'assurer qu'il soit sauvegarder en tant que UTF-8 sans BOM.

    Je dis ça mais bon... Ca n'aurait probablement pas fonctionné en local non plus.

    EDIT : Et si tu plaçais l'include au début du fichier ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 18
    Par défaut
    de même....
    et oui j'ai déjà effectué la conversion en utf-8 sans bom

  6. #6
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Ne serait-il pas mieux de faire le traitement dans un fichier séparé ?

    formulaire.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="traitement.php" ...>
    traitement.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    ...
    header('Location: formulaire.php');
    ?>

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 18
    Par défaut
    si mais j'ai pris l'habitude de faire de cette façon pour pouvoir récupérer les messages d'erreur directement à l'emplacement du include sur la même page que le formulaire html....sinon c'est sur une autre page c'est pas ce que je veux, à moins que vous ayez un moyen à me proposer (que je ne conais pas encore) pour pouvoir afficher les messages d'erreur d'un formulaire sur la même page que ce formulaire...(et oui je suis débutant ^^ )

  8. #8
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Allez on se tutoie :-)

    Si tu désires rester sur la même page, nous pouvons utiliser les Fonctions de bufferisation de sortie.

    Ca donnerait un début du fichier à peu près comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    if(@ob_start()){
    	@ob_clean();
    	// Traitement du formulaire (Echo et Print autorisé)
    	if(($data=@ob_get_clean())!==false){
    		// $data contient les messages d'erreurs et bien plus...
    	}else{
    		$data="<p>Zut ! On a pas pu récupéré les données !</p>\n";
    		@ob_end_clean();
    	}
    }else
    	$data="<p>Erreur lors du démarrage de la tamporisation de sortie</p>\n";
    ?>
    Ensuite, pour afficher les messages d'erreur plus loin dans la page
    Dans ce cas, tu n'as pas besoin de redirection.

    Edit : Après m'être relu

    Es-tu sûr que la redirection est nécessaire ?

  9. #9
    Membre chevronné
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Par défaut
    Salut,

    Tu as en fait la réponse dans le message d'erreur : il précise que des données ont déjà été envoyées par le fichier "parametres.php". Je suppose qu'il s'agit d'un fichier inclus au début de ton script. Vérifie qu'il ne contient pas de echo, et surtout qu'il n'y a pas d'espace à la fin du fichier.

    A++

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/05/2014, 23h16
  2. Réponses: 2
    Dernier message: 20/08/2009, 23h27
  3. Réponses: 1
    Dernier message: 17/07/2007, 12h49
  4. Réponses: 4
    Dernier message: 16/07/2007, 14h42
  5. Réponses: 5
    Dernier message: 04/09/2006, 16h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo