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

PHP & Base de données Discussion :

traitement connexion à ameliorer


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 2
    Par défaut traitement connexion à ameliorer
    bonjour ,
    Je viens de faire ma page de traitement de connexion et j'aimerais que vous m'aidiez à l'ameliorer en me disant ce que je pourrai changer ou ce qui ne va pas . Aussi comment puis je faire pour qu'a chaque erreur commise dans le formulaire de connexion , l'erreur (type mot de passe ou pseudo incorrect) s'affiche directement sur la meme page et non sur une nouvelle. J'espere avoir ete assez explicit. Merci !

    Voici le traitementconnexion.php:
    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
    <?php 
    if(!empty($_POST['pseudo']) && !empty($_POST['password']){                                 //si quelque chose a été tapée
        require('ConnexionBDD.php');
        $connexion=connexion();                        //on se connecte a la BDD
     
        $login=trim( htmlspecialchars( mysqli_real_escape_string($connexion ,$_POST['login']);//sécurité sur ce qui a pu etre envoye
        $password=trim( htmlspecialchars( mysqli_real_escape_string($connexion ,$_POST['password']);
     
     
    	$req="select pseudo,mdp from users where pseudo='".$_POST['pseudo']."'" ;  // si le pseudo existe dans la BDD
    	$res=mysqli_query($connexion,$req)or die(mysqli_error($connexion));      //recupere les resulatts correspondants 
    	$ligne=mysqli_fetch_assoc($res);                                         //les affiche
    	if($ligne==''){                                                      // si l'identifiant n'existe pas (resultat nul)
    		echo  "<p>Mot de passe ou pseudo erronée, veuillez réessayer</p>";
            }else{ 
    	   if(password_verify($_POST['password'],$ligne['mdp'])){     //on verifie le mot de passe
                session_start();                                               // verifiés ! on ouvre la session
    	    $_SESSION['pseudo']=$_POST['pseudo'];
                header('Location: acceuil.php');
              exit();                          
              }else{                                               //Si le mot de passe ne correspond pas
    		echo"<p>Mot de passe ou pseudo erronée, veuillez réessayer </p>";
               }
            }
    }	
    ?>
    Ainsi que son formulaire :
    Code html : 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
    <!DOCTYPE html >
    <html>
      <head>
        <title> Connexion à MarketIn </title>
        <meta charset="utf-8">
         <link rel = "stylesheet" href="css/styletp.css"  />
      </head>
     
     <body onload="document.getElementById('login').focus()">
    	    <header>
    	      <h1> Connectez-vous </h1>
    	    </header>
     
        <form method="POST" action="TraitementConnexion.php">
          <table border="1">
    	<tr>
    	  <th> <label for="pseudo"> Nom d'utilisateur: </label> </th>
    	  <td> <input id="pseudo"  type="text" name="pseudo"  required/></td>
    	</tr>
    	<tr>
    	  <th> <label for="password"> Mot de passe : </label> </th>
    	  <td> <input id="password" type="password" name="password" required/> </td>	
    	</tr>
          </table>
          <br>
          <input type="submit" value="connexion " class="bouton"/>
        </form>
        <br>
     
        <div id="PasEncoreInscrit" >
          <p> Nouveau sur Marketln ? <br>
    	<a href="Inscription.php" > Inscrivez-vous ! </a>
          </p>
        </div>
     
     
        <?php include("footer.php");?>
    </body>
    </html>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Les lignes 6 et 7 ne servent à rien puisque tu n'utilises pas ces variables ensuite. En plus visiblement c'est "pseudo" et pas "login".

    Du coup il manque la protection de $_POST['pseudo'] dans la requête ensuite.
    Mais pas la peine d'en faire des tonnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req="select pseudo,mdp from users where pseudo='". mysqli_real_escape_string($connexion ,$_POST['pseudo'])."'" ;
    "Accueil" ça s'écrit comme ça, pas "acceuil"

    Pour afficher les erreurs sur la page du formulaire, tu peux simplement faire le traitement dans le même fichier.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 2
    Par défaut
    oui , des etourderies de ma part. Du coup en remplacant login par pseudo c'est securise (pas besoin de securiser dans la requete n'est ce pas ? ) et pour le traitement tu veux dire que je l'inclus au debut de connexion.php ? merci pour ton aide !

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $pseudo = mysqli_real_escape_string($connexion ,$_POST['pseudo']); 
    $req="select pseudo,mdp from users where pseudo='".$_POST['pseudo']."'" ;
    Alors tu n'as aucune sécurité puisque tu utilises $_POST au lieu de la variable que tu as "sécurisée".
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [Debutant] Améliorer un script de connexion de lecteur réseau
    Par Masmeta dans le forum Windows Serveur
    Réponses: 3
    Dernier message: 30/07/2007, 19h53
  2. [ADO][Exception] Traitement d'erreur à la connexion
    Par femtosa dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/02/2007, 14h22
  3. [D7][INDY9]Traitement erreur connexion idTCPClient
    Par goldkey dans le forum Delphi
    Réponses: 2
    Dernier message: 21/10/2006, 14h45
  4. Amelioration de connexion
    Par flashfou dans le forum Hardware
    Réponses: 3
    Dernier message: 01/08/2006, 21h39

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