Неработающие ссылки, полученные из php, включают ссылки

Я изучаю php, но сейчас упираюсь в стену из-за проблемы со ссылками. Я много искал, но не могу найти сообщения с моей точной структурной проблемой. Надеюсь преодолеть это препятствие, чтобы перейти к следующему...

Моя базовая файловая структура примерно такая:

domain.com/
        home.php
        images/
                global/
                        nav/
                            nav-img.jpg
        includes/
                menu.php
        fruit/
                apples/
                        red/
                            gala/
                                gala.php

Я хочу создать глобальный путь, устанавливающий мой корневой веб-каталог, на который я могу ссылаться на лету на каждой странице, где бы она ни находилась. НО другие сообщения на эту общую тему дают [10] различные функции, которые я могу использовать. Я просто хочу [1]. Кроме того, я не знаю, куда поставить [например] define(ROOT) или как вызвать его с отдельной страницы.

Подойдет ли функция define(ROOT) в моей ситуации?


Зная, что все страницы используют [menu.php], мое препятствие:

Из gala/gala.php — когда я нажимаю [домой], он ищет:

/fruit/apples/red/gala/home.php  [does not exist, of course!]

Кроме того, постарайтесь ИЗБЕГАТЬ этих [2] вещей, если это возможно:

I. Использование ссылок на html-файлы в gala.php следующим образом: ../../../../includes/menu.php

чтобы найти правильное глобальное включение.

II. И избегайте использования ссылок в menu.php, например: /images/global/nav/nav-img.jpg

Будем признательны за любой отзыв [+] или [-]. Большое спасибо.


person conceive    schedule 14.03.2013    source источник
comment
ПРОЦЕДУРНЫЙ ИЛИ ООП способ PHP, я думаю, что избежать этих двух вещей одновременно невозможно. так как все еще необходимо объявить значение вашего целевого местоположения.   -  person Jhonathan H.    schedule 14.03.2013
comment
В самом деле,? Я думал, для чего нужно определение корня? Таким образом, вы можете сделать более легкую/упрощенную и переносимую ссылку на файл, например define('ROOT','some/path'), а затем вызвать файл с помощью чего-то вроде include() или require() require('ROOT.filename'). Я здесь совсем не прав? Я явно что-то упускаю...   -  person conceive    schedule 14.03.2013
comment
Кроме того, я не женат на этом. Просто было предпочтение...   -  person conceive    schedule 15.03.2013


Ответы (1)


Хорошо, вот что я сделал, что казалось лучшим:

Для И. и II. чтобы не использовать слишком много ../../../../ во всех src="" и href="" Я только что установил и использовал ссылки на файлы, относящиеся к сайту, с слэшами в начале, такими как «/includes/menu.php», которые приводили меня к корню сайта, создавая местоположение файла оттуда.

Для глобальной ссылки на файл работали ОБА:

<?php 
require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/";
?> 
// in `<head>` section

И используя <?php include ('menu.php'); ?>

ИЛИ ЭТО ТОЖЕ РАБОТАЛО:

<?php 
define('ROOT',$_SERVER['DOCUMENT_ROOT']); 
define('INCLUDES',ROOT.'/includes/'); 
?>  
// in `<head>` section

И использование <?php include (INCLUDES.'menu.php'); ?> в файле другого уровня.

person conceive    schedule 10.04.2013