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 :

Setcookie non pris en compte (Warning: Cannot modify header information - headers already sent by)


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 86
    Points : 33
    Points
    33
    Par défaut Setcookie non pris en compte (Warning: Cannot modify header information - headers already sent by)
    Bonjour,

    Je viens vcers vous car j'ai un souci avec Setcookie, celui fonctionne parfaitement avec easyphp mais sur le serveur 1and1 ... bug !

    Sur l'index j'ai un formulaire d'identification normal,

    J'ai tout essayer mais je comprend pas pourquoi le setcookie est pas pris en compte, je fait un echo juste en dessous, j'ai bien l'echo qui s'affiche. J'ai essayer d'encoder sans BOM, rien n'y fait ...

    Voici la page index :
    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
    <?php
    include "admin/config.php";
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html lang="fr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
    <head>
         <title>p1</title>
         <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    	</head>
    			<link rel="stylesheet" href="style.css" />
    			        <!--[if lt IE 9]>
            <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
            <![endif]-->
    			<title>p1</title>
    		</head>
    	<body>
     
     
     
    		<div id="bloc_page">
    			<header>
                    <div id="espacelogo">
    				<h1>
    					<a href="#" title="page1">
                        <img src="logo.png" alt="Logo de" id="logo" style="display: inline-block;" />
                        </a>
     
    				</h1>	
     
                    </div>
    				<div id="one">
    				</div>
                </header>
     
    			<div id="menu">                
                    <nav>
                        <ul>
                            <li><a href="index.html">Accueil</a></li>
                            <li><a href="#">Inscription</a></li>
    						<li><a href="#">Connexion</a></li>
    						<li><a href="#">Contact</a></li>
                        </ul>
                    </nav>
    				</div>
    		            <div id="banniere_image">
                    <div id="banniere_description">
    test test test test
     
                    </div>
     
                </div>
     
    			<div id="nivoshadow">
    				</div>
     
    			<section>
    				<article>
     
    			contenu 2
    				</article>
    					<aside>
     
     
    <?php
    include('lib/flogin.php');
    ?>	
     
      </aside>
    					</section>
     
    					<div id="classement">
     
    					<h1>Le classement</h1>
    					</div>
     
    					<div id="mentions">Mentions légales - Contactez-nous</div>
    					<div id="copyright">copy</div>
     
     
    		</div>
    	</body>
    </html>
    et la page incluse :
    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
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    <?php
    if(isset($_POST["BT_Envoyer"]))
         {
     
              // Vérification de la validité des champs
              if(!ereg("^[A-Za-z0-9_]{2,20}$", $_POST["TB_Nom_Utilisateur"]))
              {
                   echo "Votre nom d'utilisateur doit comporter entre 2 et 20 caractères<br />\n";
                   $message .= "L'utilisation de l'underscore est autorisée";
              }
              elseif(!ereg("^[A-Za-z0-9]{6,}$", $_POST["TB_Mot_de_Passe"]))
              {
                   echo "Votre mot de passe doit comporter au moins 6 caractères";
              }
              else
              {
     
     
                   // Sélection de l'utilisateur concerné
                   $result = mysql_query("
                        SELECT ID_Utilisateur, Nom_Utilisateur, Mot_de_Passe, Compte_Active
                        FROM Comptes_Utilisateurs
                        WHERE Nom_Utilisateur = '" . $_POST["TB_Nom_Utilisateur"] . "'
                   ");
     
                   // Si une erreur survient
                   if(!$result)
                   {
                        echo "Une erreur est survenue lors de la tentative de connexion";
                   }
                   else
                   {
     
                        // Si aucun utilisateur n'a été trouvé
                        if(mysql_num_rows($result) == 0)
                        {
    					echo "Le nom d'utilisateur " . $_POST["TB_Nom_Utilisateur"] . " n'existe pas";
                        }
                        else
                        {
     
                             // Récupération des données
                             $row = mysql_fetch_array($result);
     
                             // Si le compte n'a pas été activé
                             if($row["Compte_Active"] == 0)
                             {
                                  echo "Votre compte utilisateur n'a pas été activé";
                             }
                             else
                             {
     
                                  // Vérification du mot de passe
                                  if(md5($_POST["TB_Mot_de_Passe"]) != $row["Mot_de_Passe"])
                                  {
                                       echo "Votre mot de passe est incorrect";
                                  }
                                  else
                                  {
     
                                       // Définition du temps d'expiration des cookies
                                       $expiration =
                                            empty($_POST["CB_Connexion_Automatique"]) ? 0 : time() + 90 * 24 * 60 * 60;
     
                                       // Création des cookies
                                       setcookie("ID_UTILISATEUR", $row["ID_Utilisateur"], $expiration, "/");
                                       setcookie("NOM_UTILISATEUR", $row["Nom_Utilisateur"], $expiration, "/");
     
                                       // Fermeture de la connexion à la base de données
                                       mysql_close();
     
                                       // Redirection de l'utilisateur
                                       header("Location: index.php");
     
                                  }
     
                             }
     
                        }
     
                   }
     
     
              }
     
         }
     
     
    ?>
     
     
     
    <?php if(isset($_COOKIE["ID_UTILISATEUR"])) { ?>
    <p>                    <h1>Ton compte</h1>
         <a href="deconnexion.php">Déconnexion</a>
    </p>
    <?php } else { ?>
    <p>
                        <h1>Connecte-toi</h1>
    <form  method="post">
         <p>
              Nom d'utilisateur : <input type="text" name="TB_Nom_Utilisateur" />
         </p>
         <p>
              Mot de passe : <input type="password" name="TB_Mot_de_Passe" />
         </p>
         <p>
              <input type="checkbox" name="CB_Connexion_Automatique" />
              Se connecter automatiquement à chaque visite
         </p>
         <p>
              <input type="submit" name="BT_Envoyer" value="Envoyer" />
         </p>
     
         <a href="creer-compte-utilisateur.php">Créer un compte utilisateur</a> | 
    </form>
    </p>
    <?php } ?>

  2. #2
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Bonjour,

    L'instruction header doit être appelée en premier.
    Citation Envoyé par http://fr.php.net/manual/fr/function.header.php
    N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé

  3. #3
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour,

    Pourquoi cette partie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html lang="fr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
    <head>
         ...
    après un include qui sort du html aussi

    De toutes les façons ce type d'erreur, je crois provient (comme c indiqué) de html déjà envoyé et souvent lors des utilisations d'header comme ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // Redirection de l'utilisateur
     header("Location: index.php");
    Regardes bien

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 86
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par Nesmontou Voir le message
    Bonjour,

    L'instruction header doit être appelée en premier.

    Bonjour merci de ta réponse, si je comprend bien il faut mettre dans la page incluse comme ceci ? Mais si je met la redirection avant, le setcookie ne se fera pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // Redirection de l'utilisateur
    header("Location: index.php");
    // Création des cookies
    setcookie("ID_UTILISATEUR", $row["ID_Utilisateur"], $expiration, "/");
    setcookie("NOM_UTILISATEUR", $row["Nom_Utilisateur"], $expiration, "/");

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    inverse

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 86
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    inverse
    Bonjour,

    C'est déja inversé, mais ca fonctionne pas si on met comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Création des cookies
    setcookie("ID_UTILISATEUR", $row["ID_Utilisateur"], $expiration, "/");
    setcookie("NOM_UTILISATEUR", $row["Nom_Utilisateur"], $expiration, "/");
     
    // Redirection de l'utilisateur
    header("Location: index.php");

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    parce que y'a du code au dessus de setcookie

    je te conseil de faire envoyer ton formulaire dans un autre page

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 86
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    Si j'envoi le formulaire dans une autre page, j'ai plus la mise en page du site, et en plus les message d'erreurs qui apparaissent dans la div login si le membre a des erreurs de connections n'apparaitront pas...

    Ce que que trouve étrange c'est que sur easyphp aucun souci et sur 1and1 ça bug

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    c'est pas qu'il n'y a pas de soucis c'est juste que t'affiche pas les erreurs ou que le buffer est activé,
    pour le reste bienvenu dans le monde du développement

  10. #10
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 86
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    Il n'y a donc pas d'autre solution ?

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    si sépare tes fichiers

Discussions similaires

  1. [QR 4.05] Propriété imprimante non pris en compte
    Par portu dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 30/09/2008, 14h21
  2. [ASE][SQL]WHERE non pris en compte
    Par Benjamin78 dans le forum Sybase
    Réponses: 1
    Dernier message: 24/03/2006, 12h00
  3. Warning: Cannot modify header information
    Par neXistPa dans le forum Langage
    Réponses: 9
    Dernier message: 16/02/2006, 12h22
  4. Accents non pris en compte dans les requêtes SELECT
    Par YanK dans le forum Requêtes
    Réponses: 1
    Dernier message: 30/08/2005, 10h57
  5. [event] keyListener non pris en compte
    Par pierre.zelb dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 03/08/2005, 08h35

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