Partage
  • Partager sur Facebook
  • Partager sur Twitter

lorsqu'une requete a echoué a cause du login mdp-renvoyer sur une autre page

Sujet résolu
    3 avril 2006 à 12:01:28

    Bonjour,

    Je m'explique en essayant d'etre clair...

    J'ai une page d'indetification ou le visiteur entre son login mdp.
    Lorsqu'il valide, ces infos sont stockées dans 2 variables session qui me servent par la suite a me connecter a ma base.

    Fichier variable.inc.php
    $bddserver='localhost';
    $bddlogin=$_SESSION['pseudo'];
    $bddpassword=$_SESSION['password'];
    $bdd='bureautique';


    Quand j'ai besoin de me connecter a la base je fais:

    Exemple de fichier.php
    include("variable.inc.php");
    $condb=mysql_connect($bddserver,$bddlogin,$bddpassword);
    mysql_select_db ($bdd);


    Le probleme vient que si le gars entre 2 champs faux ou un des 2 faux cela me plante ma requete...
    Y a t'il un moyen de dire:
    SI la requete plante a cause d'un probleme de connexion (mdp/login faux) FAIRE renvoyer sur l'index

    Merci beaucoup, vous me retirerez une grosse epine si vous arrivez a me depanner...

    • Partager sur Facebook
    • Partager sur Twitter
      3 avril 2006 à 12:54:41

      tu na qua faire un test je pense comme ca
      du moins c'est une idee


      if
      $bddlogin=$_SESSION['pseudo'];
      $bddpassword=$_SESSION['password'];
         
      {       
                  //On redirige le membre.
                              echo '<script type="text/javascript">document.location.href="PAGES MEMBRE.php"</script>';
                             
                 
               }
               else
               {
      '<script type="text/javascript">document.location.href="INDEX.php"</script>'
           
      • Partager sur Facebook
      • Partager sur Twitter
        3 avril 2006 à 14:09:36

        Le probleme c'est que c'est si la requete passe, le membre est identifié comme authentifier et si elle ne passe pas, il ne l'est pas...

        Je ne peux comparer 2 variables qui seront identique a chaque coup comme tu l'as marqué...
        Forcement car la 1er chose que je fait apres l'envoye du nom et mdp c'est de les stocker dans session_nom et session_mdp...
        Donc:

        $bddlogin=$_SESSION['pseudo'];
        $bddpassword=$_SESSION['password'];

        est toujours vrai
        • Partager sur Facebook
        • Partager sur Twitter
          3 avril 2006 à 15:07:29

          En fait il faut une page intermédiaire qui fasse ton test password login.

          Pour cela tu creer une page qui s'apelle verif.php (par exemple) cette page est la cible de ton formulaire, elle vérifie l'existance du mdp et pseudo dans ta bdd (avec une condition if)
          if(pseudo OR password) n'existe pas dans ta base alors header(location:index.php) sinon tu va dans ta page de profil (ou autre selon ton bon vouloir)

          Voila te reste plus qu'a codée le principe est là.
          • Partager sur Facebook
          • Partager sur Twitter
            3 avril 2006 à 15:38:03

            Non plus... j'ai du mal m'exprimer, désolé.

            Alors je bosse avec phpmyadmin.
            On peut créer des utilisateurs dans phpmyadmin (en passant par privilege, ajouter un nouvel utilisateur, ect...)
            Et bien c'est ca qui va servir a authentifier mon visiteur.

            En fait aucun mdp/login n'est ecrit quelque part dans mes pages.

            Donc aucune comparaison possible avant d'ouvrir la base. Or si j'ouvre la base avec un mauvais mdp/login evidement ca me renvoye des erreurs (et toujours pas de comparaison possible forcement)

            Vous voyez mon probleme?
            En fait c'est comme si on se connectait avec ce qui suit:

            $condb=mysql_connect(localhost,Login_envoyé_par_le_visiteur,mdp_envoyé_par_le_visiteur);
                    mysql_select_db (nom_de_ma_base);     


            Forcement si Login_envoyé_par_le_visiteur et mdp_envoyé_par_le_visiteur sont different de mes utilisateurs phpmyadmin (crée dans privilege, ajouter un nouvel utilisateur) et bien la base ne s'ouvre pas...

            Je sais que c'est un peu compliqué mais en fait c'est logique...
            Je cherche donc a rediriger vers une page toute personne n'arrivant pas a ouvrir la bdd.

            Merci de votre aide ;)
            • Partager sur Facebook
            • Partager sur Twitter
              3 avril 2006 à 15:54:49

              Ok je vois ce que tu veux dire (même si j'en vois pas l'interet, mais c'est ton site tu fais comme tu veux :p:p )

              utilise la fonction or die()

              $db = mysql_connect("$host", "$user", "$pass")
                              or die("Connexion de $user impossible");


              Je pense qu'a la place de
              "connexion de $user impossible"
              il y a possibilités de faire un header(location:index.php) mais j'en suis pas sur :p:p

              <?php
              $connexion='1'; //j'initialise
              $db = mysql_connect("$host", "$user", "$pass")
                              or die($connexion=='0');
              if($connexion='0') {header(location:index.php);}


              En tout cas le or die te permettra d'envoyer un message en cas d'echec de connexion.
              • Partager sur Facebook
              • Partager sur Twitter
                3 avril 2006 à 16:47:44

                Je vais me pencher dessus car pour l'instant je n'y arrive pas...

                Merci a tous en tout cas et si d'autre personnes on des idees qu'ils n'hesites pas surtout...
                • Partager sur Facebook
                • Partager sur Twitter
                  4 avril 2006 à 9:55:08

                  Non je n'y arrive pas...
                  Je vais tenter autre chose c'est pas grave...

                  EDIT:

                  Voici comment j'ai contourné le probleme:

                  $condb=@mysql_connect($bddserver,$bddlogin,$bddpassword)or die('<center><font color="red"><h3>Mauvaise identification!</h3><br><br><a href="destrucidentification.php">Retour page identification</font></a></center>'); // Le @ enleve les messages d'erreurs du a un mauvais identifiant faisant "planter" la base.


                  Bon il faut une participation de l'utilisateur car il doit cliquer sur le lien.
                  J'aurai aimé que ca se fasse automatiquement mais bon c'est deja ca...

                  Merci a vous tous!
                  • Partager sur Facebook
                  • Partager sur Twitter
                    4 avril 2006 à 11:52:35

                    Si tu met ta redirection dans le header tu pourra faire quelque chose automatiquement sinon ==>javascript.

                    de rien a+
                    • Partager sur Facebook
                    • Partager sur Twitter
                      4 avril 2006 à 15:08:58

                      Heu comment ca?

                      Je comprend pas tres bien...

                      Pourrais tu m'expliquer s'il te plait?
                      • Partager sur Facebook
                      • Partager sur Twitter
                        4 avril 2006 à 20:31:42

                        Bah en fait tu peux faire des redirection automatique seulement quand la fonction de redirection est dans le header de ta page php (sauf si tu pâsse par javascript mais le je suis pas du tout codeur javascript (ni php d'ailleur lol) donc recherche google ;) ).
                        Donc du coup ton formulaire quand tu l'envoie vers la page que ta prévu, dans cette page tu met dans le header ta condition de vérification du mauvais mot de passe et si elle est vérifier tu utilise la fonction header(location:index.php) dans le cas d'un renvoie auto vers ta page d'accueil.

                        J'espere t'avoir bien expliquer, mais jk'en suis pas sure :p:p:p:p
                        • Partager sur Facebook
                        • Partager sur Twitter
                          5 avril 2006 à 9:54:35

                          Salut,

                          C'est moi qui est du mal m'exprimer

                          Le probleme c'est que ca ne peut pas marcher car c'est le mot de passe et le login qui servent a ouvrir la base.

                          Donc en cas de mauvais mdp ou login,

                          $condb=@mysql_connect($bddserver,$bddlogin,$bddpassword)or die('<center><font color="red"><h3>Mauvaise identification!</h3><br><br><a href="destrucidentification.php">Retour page identification</font></a></center>'); // Le @ enleve les messages d'erreurs du a un mauvais identifiant faisant "planter" la base. 


                          s'arrete au or die et affiche le message de ce or die.
                          Donc il n'y a pas de header ou autre pour faire ma redirection a moins de placer une redirection dans le or die(REDIRECTION); mais les test que j'ai effectué ne m'ont mené a rien...

                          Je vais te montrer mon code.

                          3 pages sont utiles:
                          - variable.inc.php qui permet d'initialiser les variable de connexion a la base
                          - index.php qui affiche le formulaire de login/mdp ou renvoye automatiquement sur la partie "securisé" du site (accessible que si on a entrer un bon mdp/login)
                          - connexion_db.php qui a pour principale fonction de tester si les champs login/mdp sont rempli lors de l'envoye du formulaire et d'afficher un message d'erreur en cas de mauvais mdp ou login.

                          variable.inc.php
                          <?php
                          $bddserver='localhost';
                          $bddlogin=$_SESSION['pseudo'];
                          $bddpassword=$_SESSION['password'];
                          $bdd='bureautique';
                          ?>


                          index.php
                          <?php
                          session_start();
                          if( ( (isset($_SESSION['pseudo'])) and (isset($_SESSION['password'])) ) ) //si utilisateur et mot de passe defini
                          {
                                  include("variable.inc.php");
                                  $condb=mysql_connect($bddserver,$bddlogin,$bddpassword)or die("Connexion impossible");
                                  mysql_select_db ($bdd);  
                                 
                                  $sql="SELECT * FROM bureautique_userbdd"; //requete de test ne servant qu'a verifier si l'utilisateur a les droits pour acceder a la partie administration, si la requete reussi c'est que l'utilisateur est authentifié.
                                  $result=mysql_query($sql) or die('ERROR:'.mysql_error());
                                 
                                  if(mysql_num_rows($result)) //la requete renvoye quelque chose
                                  {
                                          mysql_close();
                                          $verif=1;
                                  }
                          }
                          else
                          {
                                  $verif=0;
                          }

                                  if ( ( isset($verif) ) and ($verif==1) ) //verif est defini sur indentification.inc.php mais aussi juste ci dessus pour cette page.
                                  {
                                          header('location: index2.php');
                                  }
                                  else //si la personne ne s'est pas deja logué une fois
                                  {
                                  include("header.inc.php");
                                          ?>

                                          <center>
                                          <b>Identification</b></font>
                                          <br>

                                          Si vous avez un compte veuillez vous authentifier<br/><br/>


                                          <form action='connexion_db.php' method='post'>
                                                <b>Connexion</b><br>
                                                <input type='text' name='pseudo' size='15'><br>
                                                <input type='password' name='passe' size='17'><br><br>
                                                <input type='image' name='submit' src='image/login.gif' class='textfield'>
                                          </form>
                                          </center>

                                          <?
                                  }
                                          include("footer.inc.php");
                          ?>


                          connexion_db.php
                          <?php
                          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                          // Page servant a la connexion. Le pseudo et mdp sont testé pour savoir si les champs sont rempli.                                                      //
                          // Si les 2 champs sont rempli, le pseudo et mdp sont enregistrés dans des variables session qui seront utilisées pour la connexion a la base de donnée//
                          // On retrouve ces variables dans le fichier variable.php qui est appelé a chaque requete sur la base                           //
                          // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                          $pseudo=addslashes($_POST['pseudo']);
                          $passe=addslashes($_POST['passe']);


                          if(($pseudo=="") or ($passe=="")) //Si le champ pseudo ou mot de passe n'est pas rempli on renvoie sur la page d'identification admin.php
                          {
                                  include("header.inc.php");
                                  echo "<center><h3><font color='red'>Erreur d'identification</font></h3></center>";
                                  echo "<META HTTP-EQUIV=\"refresh\" CONTENT=\"1; URL=index.php\">";
                                  include("footer.inc.php");
                          }
                          else // sinon si les 2 champ rempli on cherche dans la table bureautique_userbdd pour voir si la requete passe
                          {
                                  if(($pseudo!="") and ($passe!=""))
                                  {
                                          session_start(); // on enregistre le nom et mdp dans des variables session qui serviront a la connection de la base.
                                          $_SESSION['pseudo']=$pseudo;
                                          $_SESSION['password']=$passe;
                                         
                                          include("variable.inc.php");
                                          $condb=@mysql_connect($bddserver,$bddlogin,$bddpassword)or die('<center><font color="red"><h3>Mauvaise identification!</h3><br><br><a href="destrucidentification.php">Retour page Login/Mot de Passe</font></a></center>'); // Le @ enleve les messages d'erreurs du a un mauvais identifiant faisant "planter" la base.
                                          mysql_select_db ($bdd);  
                                 
                                          $sql="SELECT * FROM bureautique_userbdd"; //requete de test ne servant qu'a verifier si l'utilisateur a les droits pour acceder a la partie administration, si la requete reussi c'est que l'utilisateur est authentifié.
                                          $result=mysql_query($sql) or die('ERROR:'.mysql_error());
                                         
                                          if(mysql_num_rows($result)) //la requete renvoye quelque chose
                                          {
                                                  mysql_close();
                                                  header('location: index2.php');
                                          }
                                  }
                          }

                          ?>



                          Voila j'espere que tu pourras me depanner mais meme dans le cas contraire je te remercie beaucoup!!!!
                          Et merci a tout ceux qui se sont penchés sur ce probleme! ;)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            5 avril 2006 à 18:21:34

                            J'avais bien compris ca, mais c'est vrai qu'apparement dans le or die() on ne peut pas mettre de fonction comme une redirection.

                            Donc a part la soluce que tu as utilisé je ne vois pas trop, bonne continuation ;)
                            • Partager sur Facebook
                            • Partager sur Twitter

                            lorsqu'une requete a echoué a cause du login mdp-renvoyer sur une autre page

                            × 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