簡體   English   中英

MySQLi / PHP:無法重定向到錯誤頁面?

[英]MySQLi / PHP: Not redirecting to error page?

因此,我要在這里執行的操作是讓我的用戶登錄。這是我用來執行此操作的腳本。

我剛剛使用了一個在這里找到的轉換器: 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"; 
      } 
  } 
?> 

輸出任何內容后,將無法使用header方法進行重定向。 在這種情況下,您可以在標頭重定向之前使用Echo,因此它將不起作用。

請參閱此線程以供參考: 如何修復PHP中的“已發送標頭”錯誤

在應用程序中輸出任何內容之前,應該做些什么定義重定向,如果看起來很困難,則可能需要對應用程序進行重組。

如果您不想這樣做,可以使用以下替代方法,但它們是不好的做法:

的HTML

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

Java腳本

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

同樣像往常一樣,防御MySQL注入: 如何防止PHP中的SQL注入?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM