警告:mysqli_num_rows()期望参数1是mysqli_result,布尔给定

问题描述:

警告:mysqli_num_rows()期望参数1为mysqli_result,布尔值给出 iam无法登录,并且在给定错误之上会被通知,请提出更正。谢谢。 警告:mysqli_num_rows()期望参数1是mysqli_result,布尔给定 iam无法登录,并且在给定的错误之上被通知。建议更正。谢谢。警告:mysqli_num_rows()期望参数1是mysqli_result,布尔给定

<html> 
     <head> 
      <title>Login page</title> 
     </head> 
      <style type='text/css'> 
       body{ 
         background:url('Login.jpg'); 
        } 
      </style> 
     <body> 
      <form method ='post' action='login.php'> 
       <table width='400' border='5' align='center'> 
        <tr> 
         <td colspan='5' align='center'><h1><font color="MediumBlue">Login form</h1></font> 
         </td> 

        </tr> 
        <tr> 
         <td><font color='DarkOrange'>email</font> 
         </td> 
         <td><input type='text' name='email'/></td> 
        </tr> 
        <tr> 
         <td><font color='DarkOrange'>Password</font></td> 
         <td><input type='password' name='pass'/></td> 
        </tr> 
        <tr> 
         <td colspan='5' align='center'><input type='submit' name='login' value='login'/> </td> 
        </tr> 
      </form> 

         <font color="LightSalmon"><h2><p style="position: fixed; bottom: 50%; width:100%; text-align: center"> Not registered yet?<a href='registration.php'>Sign up here</a> 
       </p><h2></font> 




     </body> 
    </html> 
<?php 
    $connection=mysqli_connect("localhost","root","","user_db"); 
    if(isset($_POST['login'])){ 
    $user_Email=$_POST['email']; 
    $user_password=$_POST['pass']; 

if($user_Email==''){ 
echo "<script>alert('please enter your email')</script>"; 
exit(); 
} 

if($user_password==''){ 
echo "<script>alert('please enter your password')</script>"; 
exit(); 
} 
    $check_user="select * from users where user_email =='$user_Email' AND user_password =='$user_password'"; 
    $result= mysqli_query($connection,$check_user); 
    $count=mysqli_num_rows($result); 
    if ($count==1) 
    { 

    echo"<script>window.open('welcome.php','_blank')</script>"; 

    } 
    else{ 
    echo"<script>alert('username or password is incorrect')</script>"; 
    } 
    } 

    ?> 
+0

在查询中将==更改为= – 2014-08-27 22:33:24

+0

已经咨询了我在下面给出的答案吗? – 2014-08-30 14:31:08

变化user_email =='$user_Email' AND user_password =='$user_password'两个==单打=

user_email ='$user_Email' AND user_password ='$user_password'


在问候密码存储。你似乎在使用纯文本; 不。如果您打算与此同时进行现场活动,那么只是时间问题才能被黑客入侵,真的是。使用CRYPT_BLOWFISH或PHP 5.5的password_hash()函数。对于PHP < 5.5使用password_hash() compatibility pack


另外,use prepared statements,或PDO with prepared statements他们安全

就目前而言,您现在的代码可以使用SQL injection

+0

旁注:我没有看到发布的评论,正在忙于输入答案。 – 2014-08-27 22:34:00

+0

@Rudie正确。我在过去6个月里看到过很多关于它的问题。 – 2014-08-27 22:39:25

也许你应该检查mysqli_query()是否在失败的情况下不返回false,例如:如果有空结果。