所以我在这里尝试做的就是让我的用户登录。 这是我用来做这个的脚本。
我刚刚使用了一个转换器: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";
}
}
?>
答案 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?。