<meta http-equiv =“refresh”content =“0; url = http://www.xxxxxxl.com/index.php”/>不刷新

时间:2015-09-16 14:29:15

标签: php html

我有一个(非常)简单的登录脚本,它工作得非常漂亮,不知何故,如果脚本页面上有任何更改,我有以下错误:

问题

<meta http-equiv="refresh" content="0; url=http://www.xxxxxx.com/index.php" /> 

上面的代码没有刷新,这意味着登录后用户没有被重定向。他必须手动刷新页面才能开始他的会话

enter image description here

正如您从上面的图片中看到的那样,登录成功但页面并不令人耳目一新

请注意,此处不能使用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

奇怪的是,这对我来说很有用,但从那以后就停止了工作。

解决方案

为什么这不起作用?

我能做些什么来解决这个问题?

任何替代方法?

非常感谢任何输入

3 个答案:

答案 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;