0

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

我遇到的问题是,在登录和注销后,我必须刷新页面才能真正出现另一个面板。我发现在 PHP 中已经完成了,header()但我在实现它时遇到了问题,因为我总是得到标头已发送的东西。无论如何,经过几个小时后,我决定使用 javascript,所以我创建了一个基本redirect(url)函数,它接受一个 URL 并打开该页面,然后我传递$_SERVER["PHP_SELF"]给该页面,所以我回到同一页面,基本上令人耳目一新。但现在我在想,如果有人禁用 JS,我会遇到问题。

我不知道的任何替代方案?干杯

4

4 回答 4

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
于 2012-04-17T21:52:42.900 回答
1

<?php在开始标记之前或结束标记之后删除空格、换行符或其他垃圾,?>以解决标头已发送问题

于 2012-04-17T21:36:22.597 回答
0

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

于 2012-04-17T21:34:10.850 回答
-1

要解决已经发送的 headers 的问题,只需添加:

ob_start();

在代码的开头。

于 2012-04-17T21:29:09.027 回答