Dav*_*ave 2 php mysql redirect
可能重复:
最佳重定向方法?
你好
我正在使用一些遗留代码,其中包含用于用户注册/登录的模块.有一个块查询数据库以查看用户是否已登录,然后重定向到登录页面.
重定向由处理,<meta http-equiv='refresh' content='=2;index.php' />但我已经知道这是折旧的,并不适用于所有浏览器.
是否有另一种方法可以在下面的代码中重新定位?
$username = mysql_real_escape_string($_POST['username']);
$password = md5(mysql_real_escape_string($_POST['password']));
$checklogin = mysql_query("SELECT * FROM users WHERE username = '".$username."' AND password = '".$password."'");
if(mysql_num_rows($checklogin) == 1)
{
$row = mysql_fetch_array($checklogin);
$email = $row['email'];
$_SESSION['username'] = $username;
$_SESSION['email'] = $email;
$_SESSION['LoggedIn'] = 1;
echo "<h1>Success</h1>";
echo "<p>We are now redirecting you</p>";
echo "<meta http-equiv='refresh' content='=2;index.php' />";
}
else
{
echo "<h2>Error</h2>";
echo "<p>Sorry, your account could not be found. Please <a href=\"index.php\">click here to try again</a>.</p>";
}
Run Code Online (Sandbox Code Playgroud)
非常感谢任何指针.
不推荐使用META刷新.您的刷新标记有一个额外的=.它应该是
<meta http-equiv='refresh' content='2;index.php' />
Run Code Online (Sandbox Code Playgroud)
您也可以使用标题刷新:
header("Refresh: 2;index.php");
Run Code Online (Sandbox Code Playgroud)
或者使用302重定向:
header("Location: /index.php");
Run Code Online (Sandbox Code Playgroud)
或者在Javascript中完成.
最好的方法?在该<head>部分中使用META刷新标记.这样做的基本原理是IE在使用页面的缓存版本时不保存标题.
您可以header()在将任何内容发送到服务器之前使用:
header("Location: index.php");
die();
Run Code Online (Sandbox Code Playgroud)
这将向浏览器发送302响应,并导致其打开其他页面。
始终确保在发出`header(“ Location”)之后不输出任何内容。您输出的任何内容仍将发送到浏览器!
最简单的方法通常是die()在header(“ Location:”)调用之后发出一个。
| 归档时间: |
|
| 查看次数: |
31410 次 |
| 最近记录: |