我正在尝试创建一个页面,如果用户请求页面则返回文件,并在代码请求时返回api响应。它工作正常,但谷歌chrome(和ie)渲染用户页面就好像它是:
<head></head>
<body><title>BLAH</title>
<h1>Bloo bloo blah</h1></body>
即使查看源返回:
<head><title>BLAH</title></head>
<body><h1>Bloo bloo blah</h1></body>
但是当我转到包含的页面时,它显示不正确。
PHP代码:
<?php
if ($_GET['mode']) {
echo 'server response';
}
else {
include_once('main.php');
}
?>
main.php代码:
<!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><title>BLAH</title></head>
<body><h1>Bloo bloo blah</h1></body>
</html>
任何帮助将不胜感激。 我在Windows 7计算机上运行的是使用IIS 6.1和PHP 5.3.5。
答案 0 :(得分:1)
请尝试以下方法:
而不是
if ($_GET['mode']) {
在使用之前检查是否设置了键mode
的值:
if (isset($_GET['mode']) && $_GET['mode']) {
这只是一个预防措施,以防PHP因为警告或通知而产生输出(但必须没有), 会影响输出。
接下来,您应该检查服务器返回的内容,而不是浏览器中的视图源。安装cUrl命令行工具(Download),然后在shell中运行:
curl http://myurl
当服务器返回HTML时,它将输出HTML。在进一步分析问题之前,实际需要此信息。
修改:问题的原因是main.php
与BOM一起保存。从文件中删除BOM,你没事。
相关:强>