Vérification de connexion ne marche pas

Résolu
andyajram
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020
- Modifié le 27 avril 2018 à 15:34
jordane45
Messages postés
35428
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 mai 2022
- 27 avril 2018 à 21:06
Bonjour, je travail sur un formulaire de connexion , mais la vérification si le mot de passe ou login sont correctes ne marche pas , je n'ai aucune action ni si c'est correct ou faux , la page de connexion se charge toujours sur elle même :

<?php
session_start();
if(isset($_POST['username']) && isset($_POST['password']))
{
    
    $db_username = 'root';
    $db_password = '';
    $db_name     = 'mapbdd';
    $db_host     = 'localhost';
    $db = mysqli_connect($db_host, $db_username, $db_password,$db_name)
           or die('could not connect to database');
    
  
    $username = mysqli_real_escape_string($db,htmlspecialchars($_POST['username'])); 
    $password = mysqli_real_escape_string($db,htmlspecialchars($_POST['password']));
    
    if($username !== "" && $password !== "")
    {
        $requete = "SELECT count(*) FROM login where 
              nom_utilisateur = '".$username."' and mot_de_passe = '".$password."' ";
        $exec_requete = mysqli_query($db,$requete);
        $reponse      = mysqli_fetch_array($exec_requete);
        $count = $reponse['count(*)'];
        if($count!=0) // nom d'utilisateur et mot de passe correctes
        {
           $_SESSION['username'] = $username;
           header('Location: principale.php');
        }
        else
        {
           header('Location: login.php?erreur=1'); // utilisateur ou mot de passe incorrect
        }
    }
    else
    {
       header('Location: login.php?erreur=2'); // utilisateur ou mot de passe vide
    }
}
else
{
   header('Location: login.php');
}
mysqli_close($db); // fermer la connexion
?>


c'est à dire qu'il ne fait pas le traitement , il passe directement au dernier else , quelqu'un peut me dire où y'a l'erreur ?

Merci d'avance

1 réponse

jordane45
Messages postés
35428
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 mai 2022
356
Modifié le 27 avril 2018 à 16:59
Bonjour,

Essaye ça :
<?php
session_start();


//affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//connexion propre mysqli
$db_username = 'root';
$db_password = '';
$db_name     = 'mapbdd';
$db_host     = 'localhost';
$db = mysqli_connect($db_host, $db_username, $db_password,$db_name)
// Check connection
if (mysqli_connect_errno()){
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}



//----------------------------------------------------------//
//récupération PROPRE des variables AVANT de les utiliser
//----------------------------------------------------------//

$username = !empty($_POST['username']) ? $_POST['username'] : NULL;
$password = !empty($_POST['password']) ? $_POST['password'] : NULL;

if($username && $password) {
     
  $username = mysqli_real_escape_string($db,$username); 
  $password = mysqli_real_escape_string($db,$password);
  
  $requete = "SELECT count(*) 
              FROM login 
              WHERE nom_utilisateur = '".$username."' 
              AND mot_de_passe = '".$password."' ";
              
  if (!$exec_requete = mysqli_query($db,$requete)){
    echo("Error requete : " . mysqli_error($db));
  }
  
  $reponse = mysqli_fetch_array($exec_requete);
  mysqli_close($db); // fermer la connexion
  
  $count = $reponse['count(*)'];
  if($count!=0){
      // nom d'utilisateur et mot de passe correctes
     $_SESSION['username'] = $username;
     header('Location: principale.php');
     exit(); //toujours mettre un EXIT après une redirection
  } else {
     header('Location: login.php?erreur=1'); // utilisateur ou mot de passe incorrect
     exit();
  }
} else {
  //le temps des tests :
   print_r($_POST);
   //header('Location: login.php?erreur=2'); // utilisateur ou mot de passe vide
   exit();
}
?>


Par contre... tu ne "crypte" pas ton password ??

normalement,
tu devrais crypter les password avant de les stocker en bdd
via l'instruction password_hash
http://www.lephpfacile.com/manuel-php/function.password-hash.php


Puis, pour les vérifier, utiliser le fonction password_verify
http://www.lephpfacile.com/manuel-php/function.password-verify.php

Cordialement, 
Jordane                                                                 
1
andyajram
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020
1
27 avril 2018 à 16:00
ça me donne une erreur: Parse error: syntax error, unexpected 'if' (T_IF) in C:\wamp\www\map-bdd\verification.php on line 17
0
jordane45
Messages postés
35428
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 mai 2022
356
27 avril 2018 à 16:36
Ligne 15 un oubli de point-virgule
$db = mysqli_connect($db_host, $db_username, $db_password,$db_name);
0
andyajram
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020
1
27 avril 2018 à 16:39
j'ai ça en URL : http://localhost/map-bdd/verification.php?username=Adminsdf&password=sdfsd

et dans la page j'ai ça : Array ( )
0
jordane45
Messages postés
35428
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 mai 2022
356
27 avril 2018 à 16:44
par ce que tu passes tes variables en GET au lieu de le faire en POST !

Quel est le code de ton formulaire HTML ?
As tu précisé la "méthode" ?
<form method="post" action="">
0
andyajram
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020
1
Modifié le 27 avril 2018 à 16:46
le voila :
<html>
    <head>
        <!-- importer le fichier de style -->
        <link rel="stylesheet" href="Style/style.css" media="screen" type="text/css" />
  <title>Connexion </title>
  
    </head>
    <body>
        <div id="container">
            <!-- zone de connexion -->
            
            <form action="verification.php">
                <h1>Connexion</h1>
                
                <label><b>Nom d'utilisateur</b></label>
                <input type="text" placeholder="Entrer le nom d'utilisateur" name="username" required>

                <label><b>Mot de passe</b></label>
                <input type="password" placeholder="Entrer le mot de passe" name="password" required>

                <input type="submit" id='submit' value='LOGIN' >

            </form>
        </div>
    </body>
</html>
0