PHP - 主文件不包含标题

时间:2016-07-15 13:15:29

标签: php html

我试图创建一个网站并尽可能多地重用代码。我使用PHP include语句,但它似乎不适合我。目前我只是试图让它与标题一起工作,但我将使用导航菜单和页脚做同样的事情。我只对HTML足够新,并且今天才开始学习PHP的包含部分,所以任何帮助都会受到赞赏。头文件位于' includes'主网站文件夹中包含的文件夹。感谢。

param3

标题代码

var MongoClient = require('mongodb').MongoClient;
var assert = require('assert');
var ObjectId = require('mongodb').ObjectID;
var url = 'mongodb://localhost:27017/yourDB';

MongoClient.connect(url, function(err, db) {

  assert.equal(null, err);

  db.collection('yourCollection').find({'param1':'value1','param2':'value2','param3' : {'$ne' : 'value3'}}).toArray(function(err, doc) {

      assert.equal(null, err);

      if (doc != null) {
         console.log(doc);
      }
   });
});

6 个答案:

答案 0 :(得分:0)

  

试试这个,但要确保下面的代码必须用php文件编写:

<body>

<?php include("Includes/Header.php"); ?> // or
<?php require("Includes/Header.php"); ?>

<div class="container-fluid">
    <div id="menu">

            <ul id="menu">
                <li><a href="#Home">Home</a></li>
                <li><a href="#OurProducts">Our Products</a></li>
                <li><a href="#OurBrands">Our Brands</a></li>
                <li><a href="#ContactUs">Contact Us</a></li>
            </ul>

    </div>
</div>

<div id="img1">
    <img src="lasange.jpg" alt="lasange">
</div>

</body>

答案 1 :(得分:0)

由于您的网页需要标题,因此请将include更改为require。这将迫使PHP在找不到文件时抛出错误(而不是仅忽略并继续)。错误的文本将是关键

我敢打赌你的道路不正确。如果使用相对路径,则它必须相对于包含语句本身的文件,而不是相对于主网站文件夹。我的建议是使用绝对路径。

最后,当您正在开发中时,我建议您启用显示错误,以便在浏览器中查看错误详细信息,或找出PHP记录错误的位置,以便在出现问题时检查错误。

将所有这些放在一起,我建议您将include行替换为:

<?php
    error_reporting(E_ALL);     
    ini_set('display_errors', '1');
    require "$_SERVER[DOCUMENT_ROOT]/Includes/Header.php";    
?>

答案 2 :(得分:0)

这是评论中的一系列观点,所有观点都非常好:

  • 您的语法可以使用空格:include "file.php";

  • 您的包含应视为区分大小写,在LAMP上,区分大小写是一个标准。这是一个很好的习惯。

  • Include需要在PHP页面上运行,如果您的页面是HTML,则不包含任何内容。 PHP可以包含任何页面,它不需要总是调用PHP页面。

  • 启用PHP错误日志记录以检查包含不显示的原因是什么。见PHP Error Displaying

  • 确保您的包含文件确实包含要输出到浏览器的内容!

  • Includerequire以及他们的_once对应方在他们的工作方式上几乎完全相同(在这个问题上有很多人都很惊讶思考只是从include更改为require的答案会使其有效,或者更改为include_once会使其突然发挥作用。

    require的区别在于,如果调用失败,那么PHP会以错误结束脚本。因此,包含的内容是必需(高帽!)。

目录

通常从当前正在运行的PHP目录开始,所以如果你有/home/account/public_html/horses/index.php的文件并且你要包含一个来自根目录html目录/home/account/public_html/include.php的文件,那么这个目录就不能从当前目录是/horses/

要回避上述整个问题,您应该使用包含绝对文件路径的文件的最佳做法,例如使用$_SERVER['DOCUMENT_ROOT'](如果包含您公共网站区域内的文件)帐户。如果包含来自您帐户其他部分的文件,那么仍然提供绝对路径但是手动(使用DEFINE或类似的方式可以提供帮助),例如:/home/account/extras/include.php

每个方案的几个例子:

相对路径:

include "folder/file.php";

上图:该文件夹需要与运行include的文件位于同一目录中。

include "../parentfolder/folder/file.php";

上图:这不起作用。包含无法更改当前工作目录上方的相对目录。

include $_SERVER['DOCUMENT_ROOT']."/folder/file.php";
// reference address: /home/account/public_html/folder/file.php

上图:只要包含HTML文档根目录(通常为public_html),此包含就会显示在您网站任意位置的任何页面上。我建议使用$_SERVER['DOCUMENT_ROOT']作为标准方式或引用包含。

define("RootHost","/home/account/secret");
include RootHost."/folder/file.php";
// reference address: /home/account/secret/folder/file.php

上述代码通常用于包含网站浏览器无法访问的内容,例如不在您的public_html HTML文档根文件夹中。

答案 3 :(得分:0)

这应该是一个评论,但它有点长......

在结构方面,这很混乱(这不是关于你的问题,而是你的方法)。 HTML头部不应出现在body标签内,并且您经常会发现要修改HTTP标头 - 这需要在任何 html输出之前使用PHP代码。

虽然将自包含片段放在单独的包含文件中是一种情况,但这些应该很好地形成(即在同一文件中打开和关闭标签)。

更好的方法是使用函数输出内容的结构元素并从页面脚本调用这些元素,除了确保HTML格式良好之外,它还可以保护您免受直接从内容发出部分内容所带来的安全漏洞。将URL直接输入浏览器时包含文件。

考虑:

<?php
define('BASE_PATH', dirname(__FILE__)); // defining as root for your app simplifies includes
include(BASEPATH . '/pageTemplate.php');  
include(BASEPATH . '/menu.php');
?>
<html>
  <head>
   <title>My demo page</title>
   <?php template_required_css_and_js(); ?>
  </head>
  <body>
   <?php template_body_start(); ?>
...
   <?php menu(); ?>
...
   <?php template_body_end(); ?>
  </body>
</html>

(顺便说一下:检查&#39;。&#39;在你的php.ini include_path中,文件的权限允许你的网络服务器阅读它。当你遇到问题时,阅读错误日志总是一个好主意)。

答案 4 :(得分:0)

PHP root的读取与标准root不同。尝试用以下代码替换代码:

include($_SERVER['DOCUMENT_ROOT']."Header.php");

答案 5 :(得分:-1)

上面的解决方案是正确的小变化:

<?php include_once("Includes/Header.php"); ?> // or
<?php require_once("Includes/Header.php"); ?>