【问题标题】:include_once not working correctly [closed]include_once 无法正常工作[关闭]
【发布时间】:2011-08-09 10:47:02
【问题描述】:

我正在尝试创建一个页面,如果用户请求该页面,则返回文件,如果代码请求,则返回 api 响应。它工作正常,但谷歌浏览器(和 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。

【问题讨论】:

  • 请提供更多细节,main.php 是做什么的?
  • 我们需要更多input
  • @ajreal - main.php 基本上什么都不做 - 目前
  • 你应该focus on the actual HTML returned, not what browser rendered
  • 哦,奇怪,来源是正确的,但渲染仍然在文件顶部显示一些空白......

标签: php include iis-6


【解决方案1】:

请尝试以下方法:

代替

if ($_GET['mode']) {

在使用之前检查是否为键 mode 设置了值:

if (isset($_GET['mode']) && $_GET['mode']) {

这只是一个预防措施,以防 PHP 因为警告或通知而生成输出(但绝不能),这可能会影响输出。

除此之外,您实际上应该检查服务器返回的内容,而不是浏览器中提供给您的视图源。安装cUrl命令行工具(Download),然后在shell中运行:

curl http://myurl

它会在您的服务器返回 HTML 时输出它。在进一步分析您的问题之前,实际上需要这些信息。

编辑:问题的原因是 main.php 与 BOM 一起保存。从文件中删除 BOM 就可以了。

相关:

【讨论】:

猜你喜欢
  • 2014-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-29
  • 2013-05-23
  • 2017-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多