Reconnaissance quand je me connecte (cookies)

joker76 Messages postés 13 Date d'inscription vendredi 14 juillet 2006 Statut Membre Dernière intervention 13 avril 2007 - 27 août 2006 à 18:23
joker76 Messages postés 13 Date d'inscription vendredi 14 juillet 2006 Statut Membre Dernière intervention 13 avril 2007 - 28 août 2006 à 18:23
Bonjour,

Je fais un espace membre, tout fonctionne, j'arrive à me connecter je change de page membre sans probleme.
Le seul probleme est que si je ferme ma page et que retourne sur le site, je suis obligé de reécrire le mot de passe et le pseudo. Pourtant dans mon code il y a un cookie qui devrait se souvenir et me ramener tout de suite sur la page membres, si j'ai coché la case se souvenir. Je vois pas ce qui cloche.

Voici le code de la page index:

<?php
//Démarrage de la session (à mettre avant tout code xhtml)
session_start();

//Si la variable $_SESSION['logged'] n'existe pas on la créée.
if (!isset($_SESSION['logged'])) $_SESSION['logged'] = false;

//Inclusion du fichier contenant les identifiants de connexion à la base de données.
require("config.inc.php");

//Connexion à la base de données.
mysql_connect($host, $username, $password);
mysql_select_db($bdd_name);

error_reporting (E_ALL);

//Ici on mettera le code pour la connexion automatique.
if ($_SESSION['logged'] === false)
{
   if (isset($_COOKIE['pseudo'], $_COOKIE['mot_passe']))
   {
      //Vérification du pseudo.
      $pseudo = htmlspecialchars($_COOKIE['pseudo']);
      $mot_passe = htmlspecialchars($_COOKIE['mot_passe']);
              
      //Requête comptant le nombre de pseudos $_POST['pseudo']
      $sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM membres WHERE pseudo='".$pseudo."'");
        
       //Si le pseudo existe.
       if (mysql_result($sql,0,'nb_pseudo') == 1)
       {
             //Vérification du mot de passe
             //Information sur le compte du membre.
             $sql_infos = mysql_query("SELECT id, mot_passe, confirmation FROM membres WHERE pseudo='".$pseudo."'");
             $donnees = mysql_fetch_array($sql_infos);
                      
             //Comparaison du mot de passe et vérification que le compte est confirmé.             if ($mot_passe $donnees['mot_passe'] && $donnees['confirmation'] 1)
             {
                   //Tout est bon, on connecte le membre.
                   $_SESSION['logged'] = true;
                  
                   //Création de 2 variables de sessio, contenant des informations sur le membre.
                   $_SESSION['id'] = $donnees['id']; //Id du membre.
                   $_SESSION['pseudo'] = $pseudo; //Pseudo du membre.
                                      
                   //Redirection vers la page membre.
                   header('Location: membres.php');
                   exit();
              }
        }
   }
}

//Ici on gérera le formulaire de connexion.

//Si la variable $_POST['connexion'] (bouton submit du formulaire) et la variable $_SESSION['logged'] vaut false (déconnecté) existent.
if (isset($_POST['connexion']) && $_SESSION['logged'] === false)
{
        //Vérification des autres variables.
        if (isset($_POST['pseudo'],$_POST['mot_passe']) && !empty($_POST['pseudo']) && !empty($_POST['mot_passe']))
        {
                //Vérification du pseudo.
                $pseudo = htmlspecialchars($_POST['pseudo']);
                $mot_passe = htmlspecialchars($_POST['mot_passe']);
              
                //Requête comptant le nombre de pseudos $_POST['pseudo']
                $sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM membres WHERE pseudo='".$pseudo."'");
              
                //Si le pseudo existe.
                if (mysql_result($sql,0,'nb_pseudo') == 1)
                {
                        //Vérification du mot de passe
                        //Information sur le compte du membre.
                        $sql_infos = mysql_query("SELECT id, mot_passe, confirmation FROM membres WHERE pseudo='".$pseudo."'");
                        $donnees = mysql_fetch_array($sql_infos);
                      
                        //Hashage du mot de passe.
                        $mot_passe_hash = md5($mot_passe);
                      
                        //Comparaison du mot de passe.
                        if ($mot_passe_hash == $donnees['mot_passe'])
                        {
                                //On vérifie que le compte est confirmé.
                                //Si $donnees['confirmation'] vaut 1.
                                if ($donnees['confirmation'] == 1)
                                {
                                        if (isset($_POST['souvenir']) && $_POST['souvenir'] == 'on')
                                        {
                                            //Temps d'expiration des cookies (1 an).
                                            $expire = time() + 3600 * 24 * 365;

                                            setcookie('pseudo', $pseudo, $expire);
                                            setcookie('mot_passe', $mot_passe_hash, $expire);
                                        }

                                        //Tout est bon, on connecte le membre.
                                        $_SESSION['logged'] = true;
                                      
                                        //Création de 2 variables de session, contenant des informations sur le membre.
                                        $_SESSION['id'] = $donnees['id']; //Id du membre.
                                        $_SESSION['pseudo'] = $pseudo; //Pseudo du membre.
                                      
                                        //Redirection vers la page membre.
                                        header('Location: membres.php');
                                        exit();
                                }
                                else
                                        echo 'Erreur : le compte nest pas confirmé !';
                        }
                        else
                                echo 'Erreur : le mot de passe est incorrect !';
                }
                else
                        echo 'Erreur : le pseudo nexiste pas !';
        }
        else
                echo 'Erreur : veuillez remplir tous les champs !';
}
?>
<html>
<head>
......
...........

et le code de la page membres:

<?php
//Ne pas oublier de mettre le session_start()
session_start();

//Inclusion du fichier contenant les identifiants de connexion à la base de données.
require("config.inc.php");

//On vérifie que le membre est connecté.
if (isset($_SESSION['logged']) && $_SESSION['logged'] === true)
{
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
....

Merci d'avance pour votre aide.

2 réponses

cs_eXon Messages postés 166 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 8 avril 2007 1
28 août 2006 à 03:47
Ah tu un message d'erruer? Si non, peut-être que c'est ton navigateur qui bloque le cookie. As-tu essayé avec un autre ordinateur ou en essayant de changer tes config?

----------------
eXon
0
joker76 Messages postés 13 Date d'inscription vendredi 14 juillet 2006 Statut Membre Dernière intervention 13 avril 2007
28 août 2006 à 18:23
Aucun message d'erreur, mon navigateur accepte les cookies sans aucun probleme. Je pense que ca vient du script, j'ai du me planter quelque part, mais je vois pas où.
0
Rejoignez-nous