Cookie (c'est trop bon sauf en php^^)

Résolu/Fermé
titi - 8 mars 2009 à 01:13
 titi - 8 mars 2009 à 14:11
Bonsoir à tous

voila j'ai un petit gros problème (ca change pas trop des autres sujets) de cookies pour l'identification de l'utilisateur.

voici le code et je vous explique le souci incompréhensible aprés^^

<?

// Redirige l'utilisateur s'il est déjà identifié
if(isset($_COOKIE["ID_UTILISATEUR"]))
{
     header("Location: index.php");
}
else
{
     
     // Formulaire visible par défaut
     $masquer_formulaire = false;
     
     // Une fois le formulaire envoyé
     if(isset($_POST["BT_Envoyer"]))
     {
          
          // Vérification de la validité des champs
          if(!ereg("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$",
               $_POST["TB_Adresse_Email"]))
          {
               $message = "Votre adresse e-mail n'est pas valide";
          }
          elseif(!ereg("^[A-Za-z0-9]{6,}$", $_POST["TB_Mot_de_Passe"]))
          {
               $message = "Votre mot de passe doit comporter au moins 6 caractères";
          }
          else
          {
               
               // Connexion à la base de données
               // Valeurs à modifier selon vos paramètres configuration
                mysql_connect("xxxxxx", "xxxxxxx", "xxxxxx");
               mysql_select_db("crea");
               
               // Sélection de l'utilisateur concerné
               $result = mysql_query("
                    SELECT ID_Utilisateur, Adresse_Email, Mot_de_Passe, Compte_Active
                    FROM Comptes_Utilisateurs
                    WHERE Adresse_Email = '" . $_POST["TB_Adresse_Email"] . "'
               ");
               
               // Si une erreur survient
               if(!$result)
               {
                    $message = "Une erreur est survenue lors de la tentative de connexion";
               }
               else
               {
                    
                    // Si aucun utilisateur n'a été trouvé
                    if(mysql_num_rows($result) == 0)
                    {
                         $message = "L'adresse " . $_POST["TB_Adresse_Email"] . " 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)
                         {
                              $message = "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"])
                              {
                                   $message = "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("ADRESSE_EMAIL", $row["Adresse_Email"], $expiration, "/");
                                  
                                
                              }
                              
                         }
                         
                    }
                    
               }
               
               // Fermeture de la connexion à la base de données
               mysql_close();
               
          }
          
     }
     
}

?>
<html>

<head><title>page</title>
<!--<link href="../style.css" rel="stylesheet" type="text/css" media="screen" /></head>-->

<body>
	
		
		
		<div id="fond">
        	<div id="top"></div>
			<div id="banner"></div>
			<br/><br/>
            <div id="tiret"></div>
			<div id="menu">
				<ul><li><a href="../index.php" class="accueil"></a></li>
    				<li><a href="../communaute.php" class="communaute"></a></li>
      			    <li><a href="../interviews.php" class="interwievs"></a></li>
       				 <li><a href="../photos.php" class="photos"></a></li>
                    <li><a href="../recrea.php" class="recrea"></a></li>
	            	<li><a href="forum.php" class="forum"></a></li>
                </ul>
	        </div>
                       <div id="glogintop"></div>
			<div id="gcommiddle"><div id="textecadre4">        
            
            
           <? if(isset($message)) { ?>
     <p><?= $message; ?></p>
<? } if($masquer_formulaire != true) { ?>
<form action="http://<?= $_SERVER["SERVER_NAME"] . $_SERVER["SCRIPT_NAME"]; ?>" method="post">
     <p>
          Adresse Email : <input type="text" name="TB_Adresse_Email" />
     </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>
</form>
<? } ?>

				</div></div>
				
			<div id="gcombottom"></div>
  
			<div id="bottom"></div>
  
  
          
		</div>

		
	
</body>



</html>


lors de la connexion de l'utilisateur, le serveur affiche:
"Warning: Cannot modify header information - headers already sent by... "pour les deux lignes de la création des cookies.

En faite j'avais déja tester ce code sur un autre serveur, mais a la place de la ligne "setcookie("ADRESSE_EMAIL", $row["Adresse_Email"], $expiration, "/");"
j'avais setcookie("NOM_UTILISATEUR", $row["Nom_Utilisateurl"], $expiration, "/"); et tout marcher nickel!

Et la plus rien ne marche.... je comprend vraiment pas
A voir également:

1 réponse

Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
8 mars 2009 à 13:15
Salut

Comme dis l'erreur les entêtes de la pages ont déjà été envoyée.
Un setcookie ne peut etre fait qu'avant toute autre sortie de type echo, print, affichage d'un element HTML etc... Tu ne doit rien afficher avant de faire un setcookie

dans ton cas vérifie bien que tu n'a pas mis d'espace ou quoi avant le premier "<?" par exemple
0
Merci beaucoup Mimiste

oui en effet, au lieu de commencer mon code a la ligne 1, je l'ai commencé a la 2....
j'aime pas ce genre d'erreur^^
0