PHP登录表单错误

时间:2016-04-26 08:42:40

标签: php mysql login

这是我从教程中得到的代码点,当我尝试登录时,它无法正常工作!它说:

  

警告:mysqli_fetch_array()要求参数1为mysqli_result,第13行的C:\ xampp \ htdocs \ index.php中给出布尔值

     

警告:mysqli_num_rows()期望参数1为mysqli_result,第16行的C:\ xampp \ htdocs \ index.php中给出布尔值

<?php
       include("config.php");
       session_start();

       if($_SERVER["REQUEST_METHOD"] == "POST") {
          // username and password sent from form 

          $myusername = mysqli_real_escape_string($db,$_POST['username']);
          $mypassword = mysqli_real_escape_string($db,$_POST['password']); 

          $sql = "SELECT * FROM tbl_users WHERE username = '$myusername' and password = '$mypassword'";
          $result = mysqli_query($db,$sql);
          $row = mysqli_fetch_array($result,MYSQLI_ASSOC);
          $active = $row['active'];

          $count = mysqli_num_rows($result);

          // If result matched $myusername and $mypassword, table row must be 1 row

          if($count == 1) {
             session_register("myusername");
             $_SESSION['login_user'] = $myusername;

             header("location: welcome.php");
          }else {
             $error = "Your Login Name or Password is invalid";
          }
       }
    ?>

非常感谢任何帮助!! 提前谢谢。

用&#34; .username更改用户名。&#34; ...这是代码!!

<?php
   include("config.php");
   session_start();

   if($_SERVER["REQUEST_METHOD"] == "POST") {
      // username and password sent from form 

      $myusername = mysqli_real_escape_string($db,$_POST['username']);
      $mypassword = mysqli_real_escape_string($db,$_POST['password']); 

      $sql = "SELECT * FROM tbl_users WHERE username = '".$myusername."' and password = '".$mypassword."'";
      $result = mysqli_query($db,$sql);
      $row = mysqli_fetch_array($result,MYSQLI_ASSOC);
      $active = $row['active'];

      $count = mysqli_num_rows($result);

      // If result matched $myusername and $mypassword, table row must be 1 row

      if($count == 1) {
         session_register("myusername");
         $_SESSION['login_user'] = $myusername;

         header("location: welcome.php");
      }else {
         $error = "Your Login Name or Password is invalid";
      }
   }
?>

<html>
<head><title>Login Page PHP Script</title></head>
<body>
    <div align="center">
        <div style="width:300px; border: solid 1px #006D9C; " align="left">
            <?php
                if(isset($errMsg)){
                    echo '<div style="color:#FF0000;text-align:center;font-size:12px;">'.$errMsg.'</div>';
                }
            ?>
            <div style="background-color:#006D9C; color:#FFFFFF; padding:3px;"><b>Login</b></div>
            <div style="margin:30px">
                <form action="" method="post">
                    <label>Username  :</label><input type="text" name="username" class="box"/><br /><br />
                    <label>Password  :</label><input type="password" name="password" class="box" /><br/><br />
                    <input type="submit" name='submit' value="Submit" class='submit'/><br />
                </form>
            </div>
        </div>
    </div>
</body>
</html>

3 个答案:

答案 0 :(得分:0)

您的查询中出现错误,这就是mysqli_fetch_array()返回false而不是对象的原因。

请尝试以下方法查看问题所在。

if (!$result) {
    printf("Error: %s\n", mysqli_error($db));
    exit();
}

但是,从您的代码来看,查询应该是(假设用户名和密码不为空)

$sql = "SELECT * FROM tbl_users WHERE username = '" . $myusername . "' and password = '" . $mypassword . "'";

答案 1 :(得分:0)

mysqli_real_escape_string()必须只包含一个参数 - 要转义的字符串。

  $myusername = mysqli_real_escape_string($_POST['username']);
  $mypassword = mysqli_real_escape_string($_POST['password']); 

答案 2 :(得分:0)

首先尝试一下。

$row = mysqli_fetch_array($result);

之后你可以检查错误。

mysqli_fetch_array($result) or die(mysqli_error());