0

こんにちは、PHP を初めて本格的に使用して、自分用のサンプル スクリプトを作成しています。私のルートフォルダには基本的な構造があります:

  • index.php
  • コア フォルダー (私の php 関数ファイルのほとんどを保持します)
  • インクルード (私の header.php と footer.php を保持)
  • サイト - (サイトには、サイト A、B、C の 3 つのフォルダーがあります)
  • CSS
  • js

すべてのページは、includes フォルダーから header.php と footer.php を取得して作成され、各ページの中間に独自のコンテンツがあります。header.php には (基本的な html や javascripts スタイルシートへのリンクなど) が含まれており、次のようなコア フォルダーからインクルードされます。

  • include_once '/core/connect.php';

現在、これらはすべて、サイトの 3 つの異なるセクション、sitea、siteb、sitec へのリンクを提供する index.php を使用してうまく機能します。

しかし、ドキュメント ルートから移動して /sites/sitea/index.php に移動すると、これらのリンクはすべて壊れています。

header.php セクションにリンクを作成して、どのフォルダにいても相対的なサイト全体になるようにする最善の方法は何ですか?

4

3 に答える 3

1

この背後にある考え方は、プロセスごとに 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 に答える
1

最良の方法は、常にどこからでも物理パスを使用することです。この方法では、インクルードのある他のページを含むすべてのページが壊れることはありません。

PHP 5.2 以下:

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

PHP 5.3 以降

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