Questions/Reponses

Bonjour à tous,
j'ai un petit probleme: j'arrive pas a me connecter avec mon login et mot de passe de l'utilisateur
Apparement l'erreur se trouve sur $nb=mysqli_fetch_array
le code est là :

<?php
//session_start();
/*****Verification du mot de passe ****/
if(isset($_POST['mdp'])){
if($_POST['pseudo']!="" and $_POST['mdp']!=""){
 $pseudo=$_POST['pseudo'];
    $mdp=$_POST['mdp'];
 
 $nb=mysqli_fetch_array($con->query("select count(*) as nb,type,Num from login where pseudo='$pseudo' and passe='$mdp'"));
 if($nb['nb']==1){
  if($nb['type']=="etudiant")
   $_SESSION['etudiant']=$nb['Num'];
  else if($nb['type']=="prof")
   $_SESSION['prof']=$nb['Num'];
  else if($nb['type']=="admin")
   $_SESSION['admin']=$nb['Num'];
 }
 else{
 ?> 
<SCRIPT LANGUAGE="Javascript">alert("Login ou mot de passe incorrect");</SCRIPT


EDIT : Ajout des balises de code

Merci Cordialement

2 réponses

  1. Salut,
    déjà il y a une erreur ici:
    else{
    ?>

    Si vous ouvrez une instruction(else) et que vous dites de fermer le programme sans fermer l'instruction ça n'ira pas.
    On peut faire ce genre de choses avec un echo suivit de HTML car il ne s'agit que de chaînes de caractères, ici c'est une instruction qui n'est pas écrite correctement...curieux que vous ne voyez pas l'erreur s'afficher.

    Regardez les erreurs lignes par ligne déjà , ça peut vous aider.
    0
    1. Modérateur
      Bonjour,

      Déjà, à l'avenir, merci d'utiliser les balises de code pour poster ton code sur le forum.
      Explications disponibles ici :
      https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

      Ensuite, commence par activer l'affichage des erreurs PHP et applique les divers conseils donnés ici
      https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

      On remarque également que :
      - Le démarrage des SESSIONS n'est pas fait (en commentaire )
      - La connexion à la bdd n'est pas présent

      Tu mélanges l'écriture "objet" et "procédurale" de ton mysqli..... il faut éviter !

      Ta requête n'est pas correcte. Tu ne peux pas avoir.. et le "count" et le détail.
      Soit tu fais deux requêtes différentes... soit tu changes ta façon de gérer ton php.

      Evite de chainer les instructions
      $nb=mysqli_fetch_array($con->query("select count(*) as nb,type,Num from login where pseudo='$pseudo' and passe='$mdp'"));
      

      A remplacer par
      $sql = "select `type`,Num 
                   from login 
                  where pseudo='$pseudo' and passe='$mdp' ";
      $res = $con->query($sql);
      if (!$res) {
         printf("Errormessage: %s\n", $con->error);
         exit;
      }
      $row = $res ->fetch_array(MYSQLI_ASSOC);
      


      On voit également que ton mot de passe n'est pas "crypté" (Hashé )... donc aucune sécurité...
      Renseignes toi sur les fonctions
      https://www.php.net/manual/fr/function.password-hash.php
      https://www.php.net/manual/fr/function.password-verify.php

      .

      0