2017-03-25 1 views
-1

Salut j'essaie de créer une fonction de connexion très simple en utilisant PHP, mais après avoir passé les codes, mon formulaire semble être en mesure d'effectuer la fonction droite seulement quand j'entre le bon nom d'utilisateur et mot de passe mais, si je ne, il ne marche pas exercer ses fonctions ici sont mes codes que j'ai simplifié:Connectez-vous je ne peux pas trouver l'erreur

login.php

<form name="userlogin" action="phpprocess/loginprocess.php" method="POST"> 

    <p>Username : <input type="text" id="username" name="username"></p> 

    <p>Password : <input type="password" id="password" name="password"></p> 

    <p><input type="submit" id="loginbtn" value="login" ></p> 

</form> 

loginproccess.php

include "mysqli.connect.php"; 

$username = $mysqli->real_escape_string($_REQUEST["username"]); 
$password = $mysqli->real_escape_string($_REQUEST["password"]); 

echo "$username"; 
echo "$password"; 

$sql = "select * from users.userlogin where username ='".$username."' and 
password = '".$password."'"; 

$result = $mysqli->query($sql); 

     if($result == null){ 
      echo"null"; 
     } 


     if($mysqli -> errno){ 
      error_log($mysqli -> error); 
      echo $mysqli -> error; 
      echo " hello"; 
      exit(); 

     }else{ 

      while(list($index, $user1, $pass1) = $result -> fetch_array()){ 

       if($user1 != null && $pass1 != null){ 
        echo "$index $user1, $pass1"; 

       } 

      } 

     } 


$mysqli->close(); 

mysqli.c onnect.php

$host="localhost"; 
$user="root"; 
$password=""; 
$database="users"; 


$mysqli = new mysqli($host, $user, $password, $database); 

if ($mysqli->errno) { 
echo "Unable to connect to the database: <br />".$mysqli->error; 
exit(); 

} 

ce qui se passe est si j'entre le mauvais nom d'utilisateur et mot de passe j'ai besoin de la page web pour faire écho bonjour, si je rentre à droite je en ai besoin de faire écho à l'utilisateur à droite et passer, mais quand entrer à tort, $ result ne semble pas être nul en tant que null et hello n'est pas imprimé. Mon journal d'erreurs n'affiche rien. J'espère entendre vos conseils! Merci d'avance !

Répondre

0

Vous imprimez hello lorsque la requête obtient une erreur, mais ce n'est pas une erreur si les conditions WHERE ne correspondent à aucune ligne. Il retourne juste un ensemble de résultats vide. Vous devez utiliser:

if ($result->num_rows == 0) { 
    echo "hello"; 
    exit(); 
} 

En outre, $result->fetch_array() retourne un tableau avec les deux index numérotés et nommés. Si votre table a 3 colonnes, cela retournera un tableau avec 6 éléments, mais vous n'attribuez que 3 variables. Utilisez $result->fetch_row() pour obtenir un tableau contenant uniquement les éléments numérotés. En outre, vous ne devez pas utiliser SELECT * si vous comptez sur l'ordre des éléments de ce type, car cela dépend de l'ordre dans lequel les colonnes ont été affectées dans l'instruction CREATE TABLE, et cela peut changer si vous mettez à jour votre schéma. Vous devez répertorier les colonnes spécifiques dont vous avez besoin dans la liste SELECT.

+0

hey barmar !! Merci pour l'information ! C'est vraiment utile car j'apprends le php par moi-même! merci et mal y aller un coup :) –