2017-03-25 101 views
-1

嗨,我想创建一个非常简单的日志功能使用PHP然而,通过代码去后,我的状态似乎能够正确,只有当我输入正确的用户名执行的功能和设置密码,如果我不,它并不在这里履行职责,是我的,我已经简化代码:登录找不到错误

的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(); 

} 

发生的事情是,如果我输入了错误的用户名和密码,我需要的网页呼应你好,如果我输入正确我需要它呼应了正确的用户,并通过但当输入错误, $结果看起来不是null,因为null和hello没有被打印出来。我的错误日志不显示任何内容。希望听到您的建议!先谢谢你 !

回答

0

当查询出现错误时,您打印hello,但如果WHERE条件与任何行不匹配,则不会发生错误。它只是返回一个空的结果集。您应该使用:

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

此外,$result->fetch_array()返回与这两个编号和命名的索引的数组。如果你的表有3列,这将返回一个包含6个元素的数组,但你只分配给3个变量。

使用$result->fetch_row()获取数组只用编号的元素。此外,你不应该使用SELECT *如果你依赖这样的元素的顺序,因为这取决于该柱在CREATE TABLE声明中分配的顺序,如果你更新你的模式,这可能改变。您应该在SELECT列表中列出您需要的特定列。

+0

哎barmar!感谢您的支持!它真的很有用,因为我自己学习PHP!谢谢你,生病了:) –