Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème espace membres

connection

    2 septembre 2006 à 11:48:51

    alors, voici se qui gère ma connection^^


    <?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("localhost", "", "");
    mysql_select_db ("benjiii34_db");
    ?>


    <?php
    //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");
                  }
            }
       }
    }
    ?>



    <?php
    //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");
                                    }
                                    else
                                            echo 'Erreur : le compte n\'est pas confirmé !';
                            }
                            else
                                    echo '
    Erreur : le mot de passe est incorrect !';
                    }
                    else
                            echo '
    Erreur : le pseudo n\'existe pas !';
            }
            else
                    echo 'Erreur : veuillez remplir tous les champs !';
    }
    ?>



    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
       <head>
           <title>EuroMasters</title>
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                 <link rel="stylesheet" media="screen" type="text/css" title="Design" href="style.css" />
       </head>
       <body>
       
       
       
       <div id="en_tete">
       
    </div>
     
       
       
       
       
       <div id="menu">


       <div class="element_menu">
           
           <ul>
               <li><a href="Accueil.php">Accueil</a></li>
      <li><a href="faq.php">FAQ</a></li>
      <li><a href="index.php">login</a></li>
      <li><a href="Règlement.php">Règlement</a></li>
      <li><a href="Historique.php">Historique</a></li>
                       
           </ul>
       </div>
       <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />


    </div>




    <div id="corps">


    <b> <br />  <center><table width="500" border="1">
         <tr>
         <td><h4><center>Bienvenue sur mon site</center></h4></td>
         </tr>
         <tr>
        <td><br /><a href="inscription.html">Inscription</a><br /><br />
            <form method="post" action="index.php">
                            <label for="pseudo">Pseudo: <input type="text" name="pseudo" id="pseudo" /></label>
                            <label for="mot_passe">Mot de passe : <input type="password" name="mot_passe" id="mot_passe" /></label><br /><br />
                            <center><label for="souvenir">Garder en mémoire => <input type="checkbox" name="souvenir" id="souvenir" /></label>
                            <input type="submit" name="connexion" value="Se connecter" /></center><br />
                    </form>
                                   
                                    </td>
      </tr>
    </table> </center>
        <br />         


    <?php
    //Déconnection de la base de données.
    mysql_close();
    ?>




    </div>



    <div id="pied_de_page">
       <!-- Enfin, on mettra en bas de la page le nom de l'auteur, un copyright... -->
    </div>

    </body>
    <html>


    Voila il y a tout, maintenant, je peux m'inscrire et comfirmer l'inscritpion, mais pas me connecter, si vous voulez la page à laquel je veux me connecter faites le moi savoir!

    merci
    • Partager sur Facebook
    • Partager sur Twitter
      2 septembre 2006 à 12:09:58

      Bonjour,

      Avec le script que tu as posté, il se peut très bien que tu soit connecté et que tu ne le sache pas (ce qui te fait dire que tu ne peux pas te connecter) :
      - Le script vérifie les cookie et agit en conséquence.
      - Puis le script regarde si le formulaire de connexion est rempli et si l'utilisateur est déconnecté, et dans ce cas, il agit.
      - Enfin, il affiche toujours la même page (avec formulaire de connexion). Ce qui fait que tu n'as aucun moyen de savoir sur le produit fini (le code HTML généré) si tu était connecté.

      La solution la plus simple consiste à inclure du PHP au niveau de ton formulaire, soit quelque chose de ce genre :
      // Au niveau du code HTML de ton formulaire, donc ...
      if ($_SESSION['logged'] === FALSE) {
          // On affiche le formulaire de connexion
      }
      else
      {
          // On affiche quelque chose indiquant qu'on est connecté : "Bienvenue $user_nom !" par exemple ...
      }

      Merci de vouloir être le plus complet dans ton post, mais tout le code HTML répétitif avec l'image barback.gif, c'est inutile, mets plutôt le code HTML réduit aux choses essentielles. Ici, tu aurais dû mettre uniquement la structure globale de la page et la partie sur le formulaire de connexion.
      • Partager sur Facebook
      • Partager sur Twitter
        2 septembre 2006 à 12:17:56

        Merci bien, et désolé, pour l'image, ji penserais la prochaine fois... ;)
        mais quelque chose m'intrigue

        {
                           //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");
                      }


        Ce code n'est il pas sensé me diriger vers ma page membres.php?
        • Partager sur Facebook
        • Partager sur Twitter
          2 septembre 2006 à 12:39:53

          En effet, seulement, cette portion de code est située tout à l'intérieur de la condition
          if (isset($_POST['connexion']) && $_SESSION['logged'] === false)

          Ce qui veut dire que cette portion de code n'est éxécutée que lorsque l'utilisateur n'est pas connecté et a rempli le formulaire.

          Donc toi, qui est déjà connecté, tu ne répond plus aux conditions spécifiées pour arriver jusqu'à cette portion de code qui t'amenerais à l'espace membre. You know ?
          Mais rien ne t'empêche de rajouter un lien vers membre.php à la place de mon "Bienvenue $user_nom !", ça sera beaucoup plus utile ...
          • Partager sur Facebook
          • Partager sur Twitter
            2 septembre 2006 à 12:44:59

            Bon, je vais avouer, le php je le connais à 20%,
            mais se que je voudrais, c'est il aller automatiquement :)
            quel est le cod epour sa et où le placer^^

            (je comprend à peu près ^^ )
            • Partager sur Facebook
            • Partager sur Twitter
              2 septembre 2006 à 13:02:10

              Si tu souhaites que l'utilisateur connecté soit TOUJOURS redirigé vers membre.php lorsqu'il visite index.php, tu as juste à rajouter avant tes premières lignes de code HTML :
              if ($_SESSION['logged'] == TRUE) {
                  header('Location:membre.php');
              }


              Mais attention, tes visiteurs connectés ne pourront plus afficher index.php, ils se feront toujours redirigés vers membre.php. Donc si sur index.php tu prévoyais des news, ils ne les verront jamais s'ils sont connecté ...
              • Partager sur Facebook
              • Partager sur Twitter
                2 septembre 2006 à 13:36:01

                Donc fodra que je refasse les news sur la page en question?
                Merci de prendre ce temps pour moi, c'est sympa si tu as besoin de service demande moi peut être que je pourrais t'aider^^
                <je suis désigner de sg conquest, et modo et animateur...c'est un jeu online de gestion> :-°

                sinon j'ai une autre question, si je veux refaire un menu, en faisant d'autre page, je doit remmetre la connection à la base sur chaque page de l'espace membres?
                • Partager sur Facebook
                • Partager sur Twitter
                  2 septembre 2006 à 13:50:54

                  Oui. C'est pour ça que ça n'est pas vraiment la meilleure solution. La meilleure (à mon goût) étant celle déjà proposée plus haut, cad :

                  Note, j'ai extrait de ton code HTML la partie qui nous interesse uniquement :
                  <div id="corps">
                      <b><br />
                      <center>
                      <table width="500" border="1">
                          <tr>
                              <td><h4><center>Bienvenue sur mon site</center></h4></td>
                          </tr>
                          <tr>
                              <td><br />
                                  <a href="inscription.html">Inscription</a><br />
                                  <br />

                  //Si l'utilisateur n'est pas connecté :
                  if ($_SESSION['logged'] === FALSE) {
                       // On affiche le formulaire de connexion


                                  <form method="post" action="index.php">
                                      <label for="pseudo">Pseudo: <input type="text" name="pseudo" id="pseudo" /></label>
                                      <label for="mot_passe">Mot de passe : <input type="password" name="mot_passe" id="mot_passe" /></label><br />
                                      <br />
                                      <center><label for="souvenir">Garder en mémoire => <input type="checkbox" name="souvenir" id="souvenir" /></label>
                                      <input type="submit" name="connexion" value="Se connecter" /></center><br />
                                  </form>

                  }
                  else
                  {
                      // On affiche un lien vers membre.php


                                  <a href="membre.php">Aller à l'espace membre</a>

                  }


                              </td>
                          </tr>
                      </table>
                      </center><br />
                  • Partager sur Facebook
                  • Partager sur Twitter
                    2 septembre 2006 à 14:36:10

                    Tu es mon dieu!!
                    Tu devrais faire des tutox^^
                    C'est bon, je peu me connecter
                    Mais maintenant c'est la déconnection :p
                    une fois finis sa sa sera parfait lol

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

                    //On vérifie que le membre est connecté.
                    if (isset($_SESSION['logged']) && $_SESSION['logged'] === true)
                    {
                       //Mettez ici votre code xhtml (et php)
                    ?> 


                      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
                       <head>
                           <title>Bienvenue sur mon site !</title>
                           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                               <link rel="stylesheet" media="screen" type="text/css" title="Design" href="style.css" />
                       </head>
                       <body>
                       </body>
                    </html>


                    <?php
                       //Exemple : affichage du lien de déconnection et du pseudo.
                       echo 'Bonjour '.$_SESSION['pseudo'].'<br/><a href="deconnexion.php">Déconnexion</a>';
                    }
                    else
                       echo 'Erreur : vous devez être connecté pour accéder à cette page !<br /> Allez <a href="index.php">ici</a> pour vous connecter.';
                    ?>

                    --------------------------------------------------------------------------------------------
                    et enfin ma page qui gère la déconexion

                    <?php
                    //Démarrage de la session.
                    session_start();

                    //Ensuite on vérifie que la variable $_SESSION['logged'] existe et vaut bien true.
                    if (isset($_SESSION['logged']) && $_SESSION['logged'] == true)
                    {
                       //On modifie la valeur de $_SESSION['logged'], qui devient false.
                       $_SESSION['logged'] = false;

                       //Destruction des cookies.
                       if (isset($_COOKIE['pseudo'],$_COOKIE['mot_passe']))
                       {
                           setcookie('pseudo','',0);
                           setcookie('mot_passe','',0);
                       }
                       
                       //Redirection.
                       header("location: index.php");
                    }
                    else
                    {
                       //On est pas connecté, alors on redirige le visiteur sur la page d'accueil.
                       header("location: index.php");
                    }
                    ?>


                    Voilà ^^
                    quand je mais déconnection, il dit qu'il ne trouve pas la page...pourtant
                    index.php existe!!
                    • Partager sur Facebook
                    • Partager sur Twitter
                      2 septembre 2006 à 16:48:19

                      Je ne sais pas si ça vient de là, mais il me semble que tu devrais remplacer
                      header("location: index.php");

                      par
                      header("Location: index.php");
                      • Partager sur Facebook
                      • Partager sur Twitter
                        2 septembre 2006 à 17:57:45

                        J'ai changer sa marche toujours pas, voici le code actuel

                        <?php
                        //Démarrage de la session.
                        session_start();

                        //Ensuite on vérifie que la variable $_SESSION['logged'] existe et vaut bien true.
                        if (isset($_SESSION['logged']) && $_SESSION['logged'] == true)
                        {
                           //On modifie la valeur de $_SESSION['logged'], qui devient false.
                           $_SESSION['logged'] = false;

                           //Destruction des cookies.
                           if (isset($_COOKIE['pseudo'],$_COOKIE['mot_passe']))
                           {
                               setcookie('pseudo','',0);
                               setcookie('mot_passe','',0);
                           }
                           
                           //Redirection.
                           header("Location: index.php");
                        }
                        else
                        {
                           //On est pas connecté, alors on redirige le visiteur sur la page d'accueil.
                           header("Location: index.php");
                        }
                        ?>


                        Je vais demander de ramener le membres à une autre page!
                        une solution?
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Problème espace membres

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown