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 :

[Cookies] cookies et 'headers already sent'


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 13
    Par défaut [Cookies] cookies et 'headers already sent'
    bonjour
    je suis musicien et je bosse actuellement sur mon nouveau site:
    http://wellwellsound.free.fr/
    j'y ai mis un livre d'or et je l'ai modifié pour qu'il corresponde au design du site mais j'ai un probleme
    lorsque l'on clique sur consulter tout va bien, ça s'ouvre dans la mainframe avec les bonnes couleurs. par contre lorsque que l'on clique sur envoyer (ou soumettre), cela fonctionne mais ça m'affiche ce message d'erreur: Warning: Cannot modify header information - headers already sent by (output started at /var/www/sdb/e/8/wellwellsound/message.php:1) in /var/www/sdb/e/8/wellwellsound/message.php on line 20
    je n'ai pourtant fait que copier le code en question du fichier consultezlo.phpdans le fichier message.php
    voici le code de message.php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    <style type="text/css">
    <!--
    body {
        background-color: #003300;
    }
    body,td,th {
        font-size: small;
        color: #FFCC00;
    }
    hr {
       color: #002200;
    background-color: #002200;
     height: 2px;
     border: 0;
    }
    -->
    </style>
    <?php
    // Pour éviter qu'une unique personne poste 50 fois dans le livre d'or, on va insérer un cookie
    setcookie("ip",$_SERVER['REMOTE_ADDR'],time()+.3600*60*90);
     
    // Si le cookie est égale à l'ip du client alors on le stop
    if(isset($_COOKIE['ip']) && $_COOKIE['ip']==$_SERVER['REMOTE_ADDR'])
    {
            echo "<h1>Vous ne pouvez émettre qu'un seul avis et vous l'avez déjà donné !</h1>";
     
            // On stop le script
            exit;
    }
    // Mettons le (future) fichier dans une variable
    $commentaires="messages.txt";
     
    // assignons nos 2 variables du formulaire et on en profite pour les protégers des balises HTML
    $pseudo=htmlentities($_POST['pseudo']);
    $message=htmlentities($_POST['message']);
     
    // Pensons au retour à la ligne et au stripslashes pour la variable $message
    $message=stripslashes(nl2br($message));
     
    // On met en place quelques conditions pour les cellules (nom et message)
    // On vérifie avant tout si le fichier existe si ce n'est pas le cas on le crée
    if(!is_file($commentaires))
    {
            $verif=@fopen($commentaires,"w+");
    }
     
    // On vérifie que le login ou le message ne soient pas vide
    elseif (trim($message)=="" || trim($pseudo)=="")
    {
            echo "Vous devez remplir tous les champs !";
     
            // On sort du script !
            exit;
    }
     
    // Après ces quelques vérification d'usage on passe  à l'exécution de ce formulaire
     
     
            // Si ok on ouvre en écirture-enregistrement du fichier message.txt
            $verif=@fopen($commentaires,"r+");
     
            // On analyse les anciennes données et on les stocks
            $stock=@fread($verif,filesize($commentaires));
     
            // On met la date dans une varialbe
            $date=date ("d/m/Y à H:i");
     
            // On paramère le tout dans la variable $opinion
            $opinion="<b>".$pseudo."</b> a écrit le : ".$date."<br />\n".$message."<br />\n<hr />";
     
            // On remet le curseur du fichier en début de ligne
            rewind($verif);
     
            // On insère le nouveau commentaire
            fputs($verif,$opinion." \n".$stock);
     
            // On clore le fichier
            fclose($verif);
     
            // On affiche le tout
            readfile($commentaires);
    ?>
    merci d'avance pour vos reponses

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 235
    Par défaut
    Salut,

    il faut que tu sois sûr qu'il n'y a pas de code avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     setcookie("ip",$_SERVER['REMOTE_ADDR'],time()+.3600*60*90);
    Essaie ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    <?php
    // Pour éviter qu'une unique personne poste 50 fois dans le livre d'or, on va insérer un cookie
    setcookie("ip",$_SERVER['REMOTE_ADDR'],time()+.3600*60*90);
    ?>
     
    <style type="text/css">
    <!--
    body {
        background-color: #003300;
    }
    body,td,th {
        font-size: small;
        color: #FFCC00;
    }
    hr {
       color: #002200;
    background-color: #002200;
     height: 2px;
     border: 0;
    }
    -->
    </style>
     
    <?php
    // Si le cookie est égale à l'ip du client alors on le stop
    if(isset($_COOKIE['ip']) && $_COOKIE['ip']==$_SERVER['REMOTE_ADDR'])
    {
            echo "<h1>Vous ne pouvez émettre qu'un seul avis et vous l'avez déjà donné !</h1>";
     
            // On stop le script
            exit;
    }
    // Mettons le (future) fichier dans une variable
    $commentaires="messages.txt";
     
    // assignons nos 2 variables du formulaire et on en profite pour les protégers des balises HTML
    $pseudo=htmlentities($_POST['pseudo']);
    $message=htmlentities($_POST['message']);
     
    // Pensons au retour à la ligne et au stripslashes pour la variable $message
    $message=stripslashes(nl2br($message));
     
    // On met en place quelques conditions pour les cellules (nom et message)
    // On vérifie avant tout si le fichier existe si ce n'est pas le cas on le crée
    if(!is_file($commentaires))
    {
            $verif=@fopen($commentaires,"w+");
    }
     
    // On vérifie que le login ou le message ne soient pas vide
    elseif (trim($message)=="" || trim($pseudo)=="")
    {
            echo "Vous devez remplir tous les champs !";
     
            // On sort du script !
            exit;
    }
     
    // Après ces quelques vérification d'usage on passe  à l'exécution de ce formulaire
     
     
            // Si ok on ouvre en écirture-enregistrement du fichier message.txt
            $verif=@fopen($commentaires,"r+");
     
            // On analyse les anciennes données et on les stocks
            $stock=@fread($verif,filesize($commentaires));
     
            // On met la date dans une varialbe
            $date=date ("d/m/Y à H:i");
     
            // On paramère le tout dans la variable $opinion
            $opinion="<b>".$pseudo."</b> a écrit le : ".$date."<br />\n".$message."<br />\n<hr />";
     
            // On remet le curseur du fichier en début de ligne
            rewind($verif);
     
            // On insère le nouveau commentaire
            fputs($verif,$opinion." \n".$stock);
     
            // On clore le fichier
            fclose($verif);
     
            // On affiche le tout
            readfile($commentaires);
     
     
    ?>

  3. #3
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 371
    Par défaut
    bien le bonjour,

    as-tu consulté la faq ?
    http://php.developpez.com/faq/?page=...s_already_sent

    ça vient du code

    <style type="text/css">[...]</style>
    qui est envoyé trop tôt

  4. #4
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     // Pour éviter qu'une unique personne poste 50 fois dans le livre d'or, on va insérer un cookie
    setcookie("ip",$_SERVER['REMOTE_ADDR'],time()+.3600*60*90);
     
    // Si le cookie est égale à l'ip du client alors on le stop
    if(isset($_COOKIE['ip']) && $_COOKIE['ip']==$_SERVER['REMOTE_ADDR'])
    {
            echo "<h1>Vous ne pouvez émettre qu'un seul avis et vous l'avez déjà donné !</h1>";
     
            // On stop le script
            exit;
    }
    doit etre au TOUT DEBUT du fichier.
    Ne rien envoyer avant d'envoyer un cookie
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 13
    Par défaut
    merci beaucoup à vous tous
    j'ai copié collé le code de steph82 et ça marche!
    vu que je ne suis pas doué pour le html et encore moins pour le php,
    je suis un peu perdu dans les faq
    encore merci et bravo pour la vitesse de vos réponses

  6. #6
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 371
    Par défaut
    dans ce cas, si ton problème est résolu, mets le tag [résolu]

    va dans outils de la discussion > mettre résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/07/2007, 11h49
  2. Réponses: 1
    Dernier message: 24/12/2006, 00h09
  3. Réponses: 5
    Dernier message: 04/09/2006, 15h13
  4. Réponses: 3
    Dernier message: 21/06/2006, 14h59
  5. [Cookies] Warning : headers already sent
    Par arti2004 dans le forum Langage
    Réponses: 8
    Dernier message: 04/04/2006, 16h31

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