以下代码是我网站的主要索引页面。它在我的测试服务器上工作得很好 - 如果我没有登录,或者没有设置任何会话,我会将我重定向到登录页面。但是,我将它上传到我的实时服务器 - 它也在那里正常工作,直到我将index.php?X = 0& Y = 0的url更改为index.php。此时它只显示背景而没有其他内容。
直到今天早些时候,当我将所有内容重新上传到我的服务器时,一切都工作得很好,但是没有一个代码发生了变化,所以没有什么应该是不同的,但确实如此。所以,我想知道你们是否看到任何可能导致它的东西。
没有错误,页面无法正常加载。
<?php //* Something Wicked This Way Comes *//
require_once("lib/bootstrap.php");
$html = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'.
'<html xmlns="http://www.w3.org/1999/xhtml">'.
'<head>'.
'<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'.
'<meta name="description" content="Control the Universe!"/>'.
'<meta name="keywords" content="game,web based, reddact, arg, story, gmz1023,elements" />'.
'<title>Reddact</title>'.
'<link rel="stylesheet" href="assets/style.css" />'.
'<link rel="stylesheet" type="text/css" href="assets/css/tooltipster.css" />'.
'<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>'.
'<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>'.
'<script src="js/jquery.tooltipster.min.js" type="text/javascript"></script>'.
'<script src="js/TimeCircles.js" type="text/javascript"></script>'.
'<script src="js/jquery.validate.min.js"></script>'.
'<script src="js/js.js" type="text/javascript"></script>'.
'<link href="favicon.ico" rel="icon" type="image/x-icon" />'.
'<link rel="stylesheet" href="js/TimeCircles.css" />'.
'</head>'.
'<body>';
echo $html;
if(!isset($_SESSION))
{
include('parts/login-page.php');
}
if(!isset($_SESSION['uid']))
{
if(!isset($_GET['error']))
{
include('parts/login-page.php');
}
else
{
include('parts/login-page.php');
}
}
if(isset($_SESSION['uid']))
{
if(isset($_GET['mode']))
{
$file = 'parts/active/'.$_GET['mode'].'.php';
if(file_exists($file))
{
include($file);
}
else
{
include('404.html');
}
}
else
{
if(!isset($_GET['X']) && !isset($_GET['Y']))
{
header('Location:'.$_SESSION['index']);
}
else
{
if(isset($_GET['portal']))
{
include('first_time.php');
}
else
{
include('starmap.php');
include('nav-menu.php');
}
}
?>
</div>
</body>
</html>
<?php
}
}
?>
答案 0 :(得分:2)
这个区块:
if(!isset($_GET['X']) && !isset($_GET['Y']))
{
header('Location:'.$_SESSION['index']);
}
是问题所在。输出任何内容后都无法更改标题。它通常不会被本地主机捕获,但肯定不会在实时服务器上运行。
尝试将echo $html;
放在if-else
语句系列之下的某个位置。
答案 1 :(得分:0)
<?php
html = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'.
'<html xmlns="http://www.w3.org/1999/xhtml">'.
'<head>'.
'<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'.
'<meta name="description" content="Control the Universe!"/>'.
'<meta name="keywords" content="game,web based, reddact, arg, story, gmz1023,elements" />'.
'<title>Reddact</title>'.
'<link rel="stylesheet" href="assets/style.css" />'.
'<link rel="stylesheet" type="text/css" href="assets/css/tooltipster.css" />'.
'<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>'.
'<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>'.
'<script src="js/jquery.tooltipster.min.js" type="text/javascript"></script>'.
'<script src="js/TimeCircles.js" type="text/javascript"></script>'.
'<script src="js/jquery.validate.min.js"></script>'.
'<script src="js/js.js" type="text/javascript"></script>'.
'<link href="favicon.ico" rel="icon" type="image/x-icon" />'.
'<link rel="stylesheet" href="js/TimeCircles.css" />'.
'</head>'.
'<body>';
echo $html;
然后在你说一些代码之后:
header('Location:'.$_SESSION['index']);
答案是:标题已经发送错误 必须设置标题 BEFORE 显示任何html内容
首先:标题
然后回显html
还要检查你的index.php?X = 0&amp; Y = 0是否有效(我假设这里是重定向)如果是这样,从逻辑上讲你的php.ini不显示错误,因为display_errors可能是0 也像我上面说的那样首先发送头文件(html)然后修改头文件(header())是不允许的。
所以你要做的就是将整个重定向if语句放在echo $ html之上;你应该没事......