0

所以我在这里尝试做的是让我的用户登录。这是我用来执行此操作的脚本。

我刚刚使用了在这里找到的转换器:https : //wikis.oracle.com/display/mysql/Converting+to+MySQLi 将我的 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"; 
      } 
  } 
?> 
4

1 回答 1

0

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

请参阅此线程以供参考:如何修复 PHP 中的“标头已发送”错误

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

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

HTML

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

Javascript

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

同样像往常一样,保护自己免受 MySQL 注入:如何防止 PHP 中的 SQL 注入?.

于 2013-07-09T14:10:24.843 回答