嗨,我只是不明白为什么我的代码不起作用。我正在为我的网站使用雅虎服务器。
这是我的注销代码。(在localhost上成功运行)但是当我在线上传此代码时,它无法正常工作。请帮忙
<?php
//logout code
include("../Config.php");
if (!isset ($_SESSION['username']))
{
header( 'HTTP/1.1 301 Moved Permanently' );
header('Location: ../index.php');
if (!headers_sent())
{
header('Location: http://www.mysite.com/index.php');
exit;
}
}
else
{
$_SESSION = array();
session_destroy();
session_unset();
header( 'HTTP/1.1 301 Moved Permanently' );
header('Location: ../index.php');
if (!headers_sent())
{
header('Location: http://www.mysite.com/index.php');
exit;
}
}
?>
config.php文件包含会话代码(如启动会话)
答案 0 :(得分:1)
您需要在标头中使用完整的URI,我建议在位置标头后面使用exit()。简单的注销不需要301标头。 并且don't use the closing tag in php。如果它在您的系统上运行,它看起来,至少有一个php文件(在启动php标记之前,或者在关闭php标记之后)有一些输出(可能只是一个空行),它似乎输出在PHP中启用了缓冲,它可以解决此错误,但在生产服务器上已禁用。
试试这个:
<?php
// for debugging purposes only, don't use on production server (just for debugging)
error_reporting(E_ALL);
ini_set('display_errors', 1);
//logout code
include("../Config.php");
if (isset($_SESSION['username']))
session_destroy();
header('Location: http://www.mysite.com/index.php');
exit;
答案 1 :(得分:0)
echo '<script type="text/javascript">
function delayer(){
window.location = "../index.php"
}
setTimeout("delayer()", 1000);
</script>';
您可以将其替换为标头
答案 2 :(得分:0)
这将有效
<script type="text/javascript">
window.location="http://www.newlocation.com";
</script>