【问题标题】:PHP adding <Head> files into <Body> [closed]PHP将 <Head> 文件添加到 <Body> [关闭]
【发布时间】:2016-04-07 00:45:18
【问题描述】:

我对 PHP 很陌生,我的主要问题是,在使用 MAMP 运行本地服务器时,站点页面工作正常,但是当托管在远程存储库上时,header.php 的全部内容都会被塞入&lt;body&gt;而不是&lt;head&gt;。我的代码如下:

  <?php
  $pageName = "This is my page title";
  $isHomeStyle = true;
  $mainjs = true; 
  $flexisel = false;
  $lazyload = false; 

  include("includes/header.php");
  include("includes/navbar.php");?>

<body>
...
</body>

当我在本地主机上加载它时,头部出现在它应该在的位置并且一切正常,当我在网上看到它时,代码看起来像这样;

<head></head>
<body>
    <div class="navbar"></div>
    <title>This is my Page title</title>
    <link rel="stylesheet" href="project/css/home.css" />
    <link rel="stylesheet" href="project/css/styles.css" />

...

<body>

显然这不对,我错过了什么?

编辑:head.php 文件如下:

<!doctype html>
<html class="no-js" lang="en">
  <head>
    <meta charset="utf-8" />
    <title>Page Name | <?= $pageName ?></title>
    <? if (true == $isHomeStyle): ?>
        <link rel="stylesheet" href="project/css/home.css" />
    <? endif; ?>
  </head>

问题已解决问题是我使用了速记标签,显然它并非在所有地方都得到完全支持。谢谢大家!

【问题讨论】:

  • 导航栏应该在正文中吗?
  • 您是否删除了缓存?
  • 请向我们展示产生该输出的header.php 文件。您可能放错了一些标签。
  • 头文件属于&lt;head&gt;,而导航栏文件属于&lt;body&gt;,就是所谓的“HTML 101”。这不是我在您的第一段代码中看到的。
  • @4castle 我已经用 header.php 文件更新了原始帖子。我的问题是我也在尝试加载文档类型吗?

标签: php html templating


【解决方案1】:

您没有在 HTML 中关闭您的 &lt;head&gt;。一些浏览器(当然是 Chrome)尝试智能地操纵 DOM 来修复语法 HTML 错误。在这种情况下,我相信您的浏览器会自动将包含的输出直接放入正文中。在开始 &lt;body&gt; 标签之前添加一个结束 &lt;/head&gt; 标签,你应该没问题。另外,我很确定您的include("includes/navbar.php"); 应该在实际正文中。

【讨论】:

  • 我已经将 PHP 移到了 head 标签中,而不是在模板中关闭了 head 标签,我还将导航栏移到了正文中。现在在远程服务器上加载时,头部显示在它应该在的位置,但我的 PHP 被视为注释。我假设这是我安装的 PHP 版本的问题?
  • 你能详细说明一下吗?我不确定情况会如何...您确定服务器确实安装并运行了 PHP 吗?
  • 是的,我们已经在这台服务器上使用 PHP 两年多了,我刚刚尝试这种模板更改,这就是为什么我被抛弃的原因。基本上,模板 header.php 有一个 if 语句(见上文),它在浏览器中呈现为 html 注释,即使 PHP 的其余部分正常工作(即包括导航栏)。
  • 向我发送一个指向 pastebin 的链接或其他我可以看到代码的地方
  • pastebin.com/RgQA0gp1 这是我在进行 4castle 建议的更改之前的代码,我感谢任何其他帮助。老实说,我很难过,很确定这是一个简单的错误。
【解决方案2】:

根据PHP Pear Docs

始终使用 &lt;?php ?&gt; 来分隔 PHP 代码,而不是 &lt;? ?&gt; 简写。这是 PEAR 合规性所必需的,也是在不同操作系统和设置上包含 PHP 代码的最便携方式。

这可能是它在 localhost 上运行但在您的在线存储库上运行的原因。

另外,请确保将include("includes/navbar.php"); 向下移动到&lt;body&gt; 标记内。

【讨论】:

  • 谢谢,这听起来像是问题所在。我假设这意味着像 $pageName 这样的变量也是 &lt;?php $pageName ?&gt; 正确的?
  • 不客气 :) 实际上是&lt;?php echo $pageName ?&gt;
猜你喜欢
  • 1970-01-01
  • 2013-04-22
  • 2016-05-22
  • 2021-02-18
  • 2013-05-27
  • 1970-01-01
  • 1970-01-01
  • 2016-07-19
  • 1970-01-01
相关资源
最近更新 更多