MySQLi/PHP:不重定向到错误页面?

MySQLi/PHP:不重定向到错误页面?,php,mysql,database,login,mysqli,Php,Mysql,Database,Login,Mysqli,所以我在这里要做的是让我的用户登录。 这是我用来做这件事的脚本 我刚刚使用了一个在这里找到的转换器:将我的Mysql转换为mysqli,因为我是一个初学者,不知道如何做 现在,当用户输入正确的密码和用户名时。 它完全符合我的要求,用户被重定向到“dashboard.php” 但是,当用户输入不正确的数据时,用户最终会得到一个黑色的“login.php”(这是我在这里展示的代码),而不是我想要的“loginerror.php” 我希望这里的一些人能帮助我,因为我迷路了 PS:是的,我知道密码现在是

所以我在这里要做的是让我的用户登录。 这是我用来做这件事的脚本

我刚刚使用了一个在这里找到的转换器:将我的Mysql转换为mysqli,因为我是一个初学者,不知道如何做

现在,当用户输入正确的密码和用户名时。 它完全符合我的要求,用户被重定向到“dashboard.php” 但是,当用户输入不正确的数据时,用户最终会得到一个黑色的“login.php”(这是我在这里展示的代码),而不是我想要的“loginerror.php”

我希望这里的一些人能帮助我,因为我迷路了

PS:是的,我知道密码现在是纯文本的,但不要担心,因为我稍后会修复它

<?php

  session_start(); 

  if(!$_SERVER['REQUEST_METHOD'] == 'POST') { 
      echo "Please leave.<br /><br />"; 
      echo "<a href='index'>Click to go back</a>"; 
      exit();     
  } 


  if(($GLOBALS["___mysqli_ston"] = mysqli_connect('localhost',  'root',  ''))) { 
      if(((bool)mysqli_query($GLOBALS["___mysqli_ston"], "USE users"))) {  
          $username = $_POST['username']; 
          $password = $_POST['password']; 

          $query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'"; 
          $zoekresultaat = mysqli_query($GLOBALS["___mysqli_ston"], $query); 

          if($zoekresultaat = mysqli_affected_rows($GLOBALS["___mysqli_ston"]) > 0) { 
              $record = mysqli_fetch_assoc($zoekresultaat);  

              $zoekresultaat = mysqli_query($GLOBALS["___mysqli_ston"], $query); 

              if($zoekresultaat = mysqli_affected_rows($GLOBALS["___mysqli_ston"]) > 0) { 
                  $record = mysqli_fetch_assoc($zoekresultaat); 

                  $_SESSION['login'] = true; 
                  $_SESSION['username'] = $record['username']; 

                  header('location: dashboard.php'); 
              } else { 
                  header('location: loginerror.php'); 
              } 

              exit(); 
          } else { 
              echo "<br /><br />Could not find Database"; 
          } 
      } else { 
          echo "<br /><br />Could not connect to Database"; 
      } 
  } 
?> 

输出任何内容后,不能使用header方法重定向。在这种情况下,在头重定向之前使用Echo,因此它将不起作用

参考此线程:

在输出应用程序中的任何内容之前,您应该做什么定义重定向,如果这看起来很困难,您的应用程序可能需要重新构造

如果您不想这样做,这里有一些备选方案,但它们是不好的做法:

HTML

<meta http-equiv="Location" content="http://example.com/">

Javascript

<script> location.replace("target.html"); </script>
location.replace(“target.html”);

同样像往常一样,要防止MySQL注入:.

DEbug&检查它是否真的是在else条件下出现的。在编写更多SQL代码之前,必须仔细阅读以避免错误。使用
mysqli
时,您需要使用该方法提供查询所使用的值,并且永远不要将用户提供的数据从
$\u POST
直接放入您的查询中。这很奇怪,因为它在转换到mysqli之前工作得非常好,我现在就要测试它,为什么要使用“header('location:dashboard.php');”是的,但另一个不起作用?肯定有别的东西改变了。如果在使用header()之前输出了任何内容,即使它是PHP文件中的尾随空格,也无法工作。