我有一个(非常)简单的登录脚本,它工作得非常漂亮,不知何故,如果脚本页面上有任何更改,我有以下错误:
问题
<meta http-equiv="refresh" content="0; url=http://www.xxxxxx.com/index.php" />
上面的代码没有刷新,这意味着登录后用户没有被重定向。他必须手动刷新页面才能开始他的会话
正如您从上面的图片中看到的那样,登录成功但页面并不令人耳目一新
请注意,此处不能使用header("location:")
:
另请注意我使用Ajax和表单提交,以获得值得...
登录脚本的一部分:
if ($_SERVER["REQUEST_METHOD"] == "POST"){
//do stuff
if(mysqli_num_rows($result) = 1){
while{
//GET session variables
}//while
echo 'Success! Logging In....';
echo '<meta http-equiv="refresh" content="0; url=http://www.xxxxx.com/index.php" />'//now refresh page
}//if
}//if
奇怪的是,这对我来说很有用,但从那以后就停止了工作。
解决方案
为什么这不起作用?
我能做些什么来解决这个问题?
任何替代方法?
非常感谢任何输入
答案 0 :(得分:3)
您尝试这样做的方式无效,因为<meta>
标记应该位于页面的<head>
部分,而不是正文中。另外,一旦发送输出,您就无法使用<meta http-equiv="refresh">
或任何其他标头指令。
尝试更换此部分:
echo '<meta http-equiv="refresh" content="0; url=http://www.xxxxx.com/index.php" />'
用这个:
echo '<script>location.href="http://www.xxxxx.com/index.php"</script>';
答案 1 :(得分:0)
更好的方法是使用PHP来更改标题:
header( "refresh:0;url=index.php" );
代替您的echo
元标记
答案 2 :(得分:0)
您似乎混淆了用于构建网站的所有技术。最后你只有纯HTML,它应该是这样的:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="refresh" content="5; url=http://www.google.com/"></head>
<body>
<p>Redirecting in 5 seconds...</p>
</body>
</html>
从浏览器的角度来看,如何生成此代码无关紧要。
浏览器旨在对无效HTML非常宽容,并且您已将其推向极限。然而,Firefox和Chrome看起来都处理得很好:
Not redirecting
<meta http-equiv="refresh" content="5; url=http://www.google.com/"></head>
所以必须有其他你没有分享的东西。
说,这是重定向的最奇怪的方式。我甚至都不知道人们在2015年仍在使用它。既然你有PHP,那就利用它:
header('Location: http://www.xxxxxx.com/index.php');
exit;