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

时间:2013-07-09 14:03:34

标签: php mysql database login mysqli

所以我在这里尝试做的就是让我的用户登录。 这是我用来做这个的脚本。

我刚刚使用了一个转换器:https://wikis.oracle.com/display/mysql/Converting+to+MySQLi将我的Mysql转换为mysqli,因为我是初学者,不知道该怎么做。

现在,当用户输入正确的密码和用户名时。 它完全符合我的要求,用户被重定向到' dashboard.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"; 
      } 
  } 
?> 

1 个答案:

答案 0 :(得分:0)

输出任何内容后,无法使用标题方法重定向。在这种情况下,您在标题重定向之前使用Echo,因此它将无法工作。

请参阅此主题以供参考:How to fix "Headers already sent" error in PHP

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

如果您不想这样做,可以选择以下几种方法,但这些方法很糟糕:

<强> HTML

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

<强>的Javascript

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

与往常一样,保护自己免受MySQL注入:How can I prevent SQL injection in PHP?