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 et "header already sent"


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3
    Points : 6
    Points
    6
    Par défaut Cookies et "header already sent"
    Bonjour à tous !

    Alors voilà, je débute en PHP, et je voudrais créer un cookie. Je suis au courant que cela doit intervenir avant tout envoi de données au navigateur (pas de print(), header(), etc. avant) : c'est bien le cas dans mon script (du moins j'ai l'impression), et pourtant j'obtiens une erreur :
    Warning: Cannot modify header information - headers already sent by (output started at /homez.194/webdujou/www/vote.php:1) in /homez.194/webdujou/www/vote.php on line 57

    Warning: Cannot modify header information - headers already sent by (output started at /homez.194/webdujou/www/vote.php:1) in /homez.194/webdujou/www/vote.php on line 61
    Les lignes 57 et 61 correspondent respectivement à un header() et à un setcookie().

    Je ne comprends vraiment pas d'où peut venir les informations envoyées au navigateur avant ces 2 lignes (il y a un print plus haut, certes, mais il est dans un if qui n'est pas vérifié).

    Voici le script PHP, sachant que le fichier vote.php ne contient bien que ce texte (pas de HTML autour).

    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
    <?php
     
    $connexion = mysql_connect("SECRET", "SECRET", "SECRET") or die(mysql_error());
    mysql_select_db("webdujousql") or die(mysql_error());
     
    $moisavectiret = $_POST['moisduvote'];
    $moissanstiret = str_replace("-","",$_POST['moisduvote']);
     
    if(!isset($_POST['votepour'])) //Vérifie que la page n'a pas été chargée directement
    	{
    	print "Vous n'avez pas accès à cette page.<br />Retour sur <a href=http://www.monsite.fr>Webdujour</a>";
    	}
    	elseif ($_COOKIE['dejavote'] == $moisavectiret) //Vérifie que n'a pas déjà voté
    	header("Location: http://www.monsite.fr/vote/?erreur=dejavote");
    else
    	{
     
    //Fonction générale servant à tester si la table SQL des votes pour ce mois existe
    function mysql_table_exists($db, $table){
        $query = "SHOW TABLES FROM $db";
        $runQuery = mysql_query($query);
     
        $tables = array();
        while($row = mysql_fetch_row($runQuery)){
            $tables[] = $row[0];
        }
     
        if(in_array($table, $tables)){
            return TRUE;
        }
    }
     
     
    //Si la table de vote pour ce mois n'existe pas encore...
    if(! mysql_table_exists('webdujousql','vote_'.$moissanstiret)){
     
    // ...la créer
    mysql_query('CREATE TABLE vote_'.$moissanstiret.' (id INT not null AUTO_INCREMENT, idsite INT not null, titresite VARCHAR(100) not null, nbvotes INT, PRIMARY KEY (id))') or die('ERREUR : Impossible de créer une nouvelle table pour ce mois.<br />'.mysql_error());
     
    // puis la remplir avec tous les sites du mois
    $sql1 = "SELECT ID,post_title FROM wp_posts WHERE post_date LIKE '".$moisavectiret."-%' AND post_status='publish' AND post_type='post'";
    $req1 = mysql_query($sql1) or die('ERREUR : Impossible de récupérer les sites du mois pour les ajouter dans la table de vote');
     
     
    while($data = mysql_fetch_assoc($req1)) 
        { 
    	mysql_query("INSERT INTO vote_".$moissanstiret."(idsite,titresite,nbvotes) Values('".$data['ID']."','".addslashes($data['post_title'])."','0')") or die(mysql_error());  
        }
     
    }
     
    //On passe au vote pour le site choisi
    mysql_query("UPDATE vote_".$moissanstiret." SET nbvotes = nbvotes + 1 WHERE idsite='".$_POST['votepour']."'") or die("ERREUR : Impossible d'incrémenter le compteur de votes pour ce site.<br />".mysql_error());
     
    //Création du cookie
    $endTime = mktime(23, 59, 59, date('m'), date("t",time()), date('Y')); // jusqu'à la fin du mois
    setcookie ("dejavote", $moisavectiret, $endTime); // C'EST LA LIGNE 57
     
     
    //Redirection
    header("Location: http://www.monsite.fr/vote/? voteok=".$_POST['votepour']); // C'EST LA LIGNE 61
     
    } //fin du premier IF de tout en haut
     
    ?>
    Est-ce que vous voyez quelque chose qui cloche ?
    Merci beaucou pour votre aide.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Le problème est à la ligne 1.

  3. #3
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    mysql_select_db("webdujousql") t'oublierais pas de lui indiquer comment se connecter?

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/12/2006, 00h09
  2. Réponses: 5
    Dernier message: 04/09/2006, 15h13
  3. Réponses: 3
    Dernier message: 21/06/2006, 14h59
  4. [Cookies] cookies et 'headers already sent'
    Par wellser dans le forum Langage
    Réponses: 5
    Dernier message: 26/04/2006, 13h37
  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