我正在构建一个包含登录页面的网站。一旦他们成功登录,我需要将用户重定向到他们的个人资料页面,但我不知道如何在 PHP 中做到这一点(这是我的第一个站点)。
我已经在互联网上搜索并被告知 header()
函数应该可以解决问题,但只有在我在使用之前没有输出任何信息时它才会起作用。
那就是问题所在。我已经输出了一堆信息(包括用于构建登录页面本身的 HTML)。
那么如何将用户从一个页面重定向到下一个页面呢?
我有什么选择?此外,在这些情况下,最佳做法是什么?
编辑:这是我的整个 login.php
页面:
<?php
session_start();
echo "<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>Sprout</title>
<link rel='stylesheet' href='stylesheet.css' type='text/css'>
</head>
<body>
<div class='box'>
<form action='login.php' method='post'>
Name<br /> <input type='text' name='username' class='form'/><br />
Password<br /> <input type='password' name='password' class='form'/>
<input type='submit' value='Login' class='button' />
</form>
</div>
</body>
</html>";
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$username = $_POST["username"];
$password = $_POST["password"];
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "root";
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ("Error connecting to database");
$dbname = "database";
mysql_select_db($dbname);
$query = "SELECT username FROM users WHERE username = '$username' AND password = '$password'";
$result = mysql_query($query) or die ("Failed Query of " . $query);
while($row = mysql_fetch_assoc($result))
{
$_SESSION["user"] = $username;
}
}
?>
原文由 jasonaburton 发布,翻译遵循 CC BY-SA 4.0 许可协议
这意味着您的应用程序设计非常糟糕。您不应该在业务逻辑运行时进行输出。使用模板引擎(如 Smarty )或使用 输出缓冲 快速修复它)。
另一种选择(虽然不是一个好选择!)将输出 JavaScript 以重定向: