[英]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.