Récupération d'une ligne dans la bdd

Récupération d'une ligne dans la bdd - PHP - Programmation

Marsh Posté le 19-01-2018 à 12:07:47    

Bonjour,
 
Sur la page de connexion, j'aimerais vérifier si les variables username et password existent dans ma base de donnée et si c'est le cas de rediriger vers la page :

Code :
  1. header("location: accueil.php" );


mais cela ne retourne rien, ça revient sur la même page de connexion. Merci de m'aider.
 

Code :
  1. <?php
  2. /*
  3. Page: login.php
  4. */
  5. // à mettre tout en haut du fichier .php, cette fonction propre à PHP servira à maintenir la $_SESSION
  6. session_start();
  7. include("config.php" );
  8. try
  9. {
  10. // On se connecte à MySQL
  11.     $pdo = new PDO('mysql:host=localhost;dbname=projet;charset=UTF8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
  12. }
  13. catch(Exception $e)
  14. {
  15. // En cas d'erreur, on affiche un message et on arrête tout
  16.     die('Erreur : '.$e->getMessage());
  17. }
  18. if (isset($_SESSION['admin']) && $_SESSION['admin']=$username) {
  19.    
  20.     $adminpageError = "<p><a href='logout.php'>Log Out </a></p>";
  21. }
  22. if(isset($_POST['valider'])) {
  23.     $username = htmlentities($_POST['username']);
  24.     $password = $_POST['password'];
  25.     $password2 = $_POST['password2'];
  26.     $champsremplis  = !empty($username) && !empty($password) && !empty($password2);
  27.     if(!$champsremplis){$msgerr[] = "Tous les champs sont obligatoires";}
  28.     $correspondancepasswords = ($password == $password2) ;
  29.     if(!$correspondancepasswords){$msgerr[] = "Les mots de passes ne corespondent pas";}
  30.     if(empty($msgerr)){
  31.     // ici, tout est OK
  32.             // je peux rechercher dans la base de données
  33.         $password = password_hash($password,PASSWORD_DEFAULT);
  34.         $query = $pdo->prepare('SELECT * FROM client WHERE username = :username and  password = :password');
  35.         $result = $query->execute(array('username' => $username, 'password' => $password));
  36.         if($query->rowCount()>0){
  37.             $user = $result->fetch(PDO::FETCH_ASSOC);
  38.             $_SESSION['username'] =$user['username'];
  39.             header("location: accueil.php" );
  40.         } else {
  41.             $msg[] = "Utilisateur/Mot de passe inexistant";
  42.         }
  43.     } else {
  44.      // traitement des erreurs
  45.         foreach ($msgerr as $value){
  46.             echo $value."</br>";
  47.         }
  48.     }
  49. // retraitement des erreurs
  50. }

Reply

Marsh Posté le 19-01-2018 à 12:07:47   

Reply

Marsh Posté le 23-01-2018 à 15:00:17    

Bonjour.

 

1. Rien à voir, mais évite les requêtes SELECT *, il vaut mieux préciser les colonnes à récupérer SELECT ID, PASS
Pareil, il vaut mieux éviter de mélanger code et présentation (php et html)

 

2. Pour ton problème :
- Quand tu parles de "page de connexion", c'est laquelle ? Le code correspond à quelle page ?
Tu peux toujours afficher tes variables (et des indications sur les endroits où tu passes) le temps de débugger...

 

[Edit] Que fais-tu de ton tableau $msg ?


Message édité par macgawel le 23-01-2018 à 15:01:38

---------------
Choisir le vote de protestation aux élections, c’est comme débarquer dans un hôtel et décider de faire ses besoins dans le lit en guise d’indignation, puis se rendre compte qu’il va falloir dormir là quand même (Alan Moore)
Reply

Marsh Posté le 28-01-2018 à 10:50:47    

Bonjour iamlouky,  
Si on suppose que vous pouvez lire les infos de votre table client, voici svp le code
 

Code :
  1. <?php
  2.     // on se connecte à notre base
  3.     $base = mysql_connect ('serveur', 'login', 'pass');
  4.     mysql_select_db ('ma_base', $base) ;
  5.    
  6.     $sql = ''SELECT * FROM client WHERE username = :username and  password = :password'"';
  7.     $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  8.     $data = mysql_fetch_array($req);
  9.     mysql_free_result ($req);
  10.     mysql_close ();
  11.     ?>


---------------
Comment regarder la TV sans le câble ?  https://how-to.watch/fr/tv-sans-cable/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed