0

您好,我第一次认真地使用 PHP 为我自己创建一个示例脚本。它有一个基本结构,在我的根文件夹中,我有:

  • 索引.php
  • 核心文件夹(包含我的大部分 php 函数文件)
  • 包括(持有我的 header.php 和 footer.php)
  • 站点 - (站点还有 3 个文件夹站点 A、B、C)
  • CSS
  • js

所有页面都是通过从包含文件夹中获取 header.php 和 footer.php 组成的,然后每个页面在中间都有自己的内容。header.php 包含(以及基本的 html 和到 javascripts 样式表等的链接)包括来自核心文件夹,如下所示:

  • include_once '/core/connect.php';

现在这些都可以使用 index.php 很好地工作,它提供了指向站点 3 个不同部分的链接,sitea、siteb 和 sitec。

但是,当您从文档根目录导航到 /sites/sitea/index.php 时,所有这些链接现在都已损坏。

在 header.php 部分中构建链接的最佳方法是什么,以便无论您在哪个文件夹中,它们都是相对站点范围内的?

4

3 回答 3

1

最好的方法是始终使用无论您身在何处的物理路径 - 这样每个包含其他页面的页面都不会中断:

PHP 5.2 及以下版本:

require(dirname(__FILE__) . '/core/connect.php');

PHP 5.3 及以上

require(__DIR__ . '/core/connect.php');
于 2013-03-26T23:41:04.937 回答
1

这背后的想法是每个进程只有一个文件。

所以通过index.php处理所有页面

index.php 将包含,例如,

require('header.php');
include('content.php');
require('footer.php');

这样,如果您的内容没有显示,它不会破坏网站。

您的索引始终从同一路径加载,因此页眉/页脚不会改变。只是内容。

于 2013-03-26T23:23:45.347 回答
1

当您包括在内时,您想使用真实路径,而不是相对路径......

require_once ($_SERVER['DOCUMENT_ROOT'].'/includes/header.php');
/* something happens here */
require_once ($_SERVER['DOCUMENT_ROOT'].'/includes/footer.php');
于 2013-03-26T23:24:06.847 回答