2012-04-17 52 views
0

我花了两天的时间尝试在PHP中创建登录/注销面板。我正在使用一个PHP文件来检查您是否已经通过会话变量登录并回显相应的“面板”。如何刷新使用JS,PHP或HTML的HTML页面

我的问题是,登录和注销后,我必须刷新页面,以便其他面板实际显示。我发现在PHP中是通过header()完成的,但是我遇到了一个问题实现,因为我总是得到头文件已发送的东西。无论如何,在几个小时后我决定使用javascript,所以我做了一个基本的redirect(url)函数,它需要一个URL并打开该页面,我将$_SERVER["PHP_SELF"]传递给该页面,因此我回到了同一页面,基本上令人耳目一新。但现在我想,如果有人禁用JS,我会遇到问题。

任何替代品我不知道?在你的代码的开始

ob_start(); 

: 干杯

+0

是不是你已经刷新页面,当有人登录或退出,或你用阿贾克斯? – jeroen 2012-04-17 21:26:35

+1

你可以看看Meta Redirect的(HTML) - http://en.wikipedia.org/wiki/Meta_refresh – 2012-04-17 21:27:04

+0

顺便说一下,如果你需要重定向并不应该给你php的头部函数如果你的逻辑在最上面,输出到浏览器的话,会有什么问题。 – jeroen 2012-04-17 21:27:57

回答

2

JavaScript解决方案:

var newURL = "http://THE-URL.com"; 
document.location.href = newURL; 

location.reload(true); 

HTML解决方案:

<meta http-equiv="refresh" content="2;url=http://THE-URL.com"> 

PHP解决方案:

// taken from http://www.phpfreaks.com/forums/index.php?topic=228678.0 
function redirect($loc){ 
    echo "<script>window.location.href='".$loc."'</script>"; 
} 
function GoHere(){ 
    redirect('http://THE-URL.com'); 
} 

header("refresh: 2; url='http://THE-URL.com'"); 

用户解决方案:

Press F5 
+1

大声笑关于F5 – 2012-04-17 22:14:59

+0

所以我认为这是真的:P – 2012-04-17 22:15:18

-1

针对已经发送了头的问题,只是增加。

+0

解决底层结构问题通常会更好。 – ceejayoz 2012-04-17 21:34:12

+0

添加它在哪里?关于之前的一切? – 2012-04-17 21:34:24

0

尝试使您的注销脚本是它自己的页面。使注销链接指向那里,然后取消设置会话变量。您可以获取页面引用链接并将它们发回给它。

+0

“it”表示它们来自注销的页面。 – slowBear 2012-04-17 21:34:48

1

删除空格,换行,开口<?php标签之前或关闭?>标签之后或其他垃圾解决头已经发出已问题