Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Корректное указание путей

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Сбиваются пути, после выполнения action из формы
20VinT11
Отправлено: 25 Ноября, 2014 - 18:42:01
Post Id



Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2014  


Помог: 0 раз(а)




При обработке данных из формы скриптом, указанном в action="act/action.php" возникает проблема с путями к другим скриптам. Если до обработчика скрипты отлично работают по относительным путям типа main/*.php, то после выполнения запроса из формы везде приходится указывать абсолютные пути типа $path = $_SERVER["DOCUMENT_ROOT"] и путь $path/main/*.php т.е во всем проекте что ли так делать? Как этого избежать????? В адресной строке браузера после выполнения скрипта action.php висит путь ИмяСата/act/action.php и видимо все скрипты начинают эту директорию воспринимать как ту от которой следует плясать..... Как на сайте глобально оптеделить корневую директорию?
 
 Top
DeepVarvar Супермодератор
Отправлено: 25 Ноября, 2014 - 19:03:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Как на сайте глобально оптеделить корневую директорию?

1) Для HTTP контекста - всегда и все от корня сайта, т.е. начиная со слеша: /a/b/c?x=2 или даже полностью с доменом чтобы не зеркалили сайт так просто.
2) Для бекенда php - всегда абсолютный путь от корня диска, хранить в константе:

index.php:
CODE (htmlphp):
скопировать код в буфер обмена
  1. define('APPLICATION', dirname(__FILE__) . '/');
 
 Top
20VinT11
Отправлено: 25 Ноября, 2014 - 19:51:02
Post Id



Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2014  


Помог: 0 раз(а)




т.е я правильно понял: нужно в самом начале определить константу корневой директории define ('CONSTANT', dirname($_SERVER["DOCUMENT_ROOT"])); и перед каждым requare или include вызывать эту константу .... include "CONSTANT/main/index.php" ???
 
 Top
Мелкий Супермодератор
Отправлено: 25 Ноября, 2014 - 20:11:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Нет, именно __DIR__ или dirname(__FILE__)
DOCUMENT_ROOT может указывать не туда.


-----
PostgreSQL DBA
 
 Top
20VinT11
Отправлено: 25 Ноября, 2014 - 20:48:48
Post Id



Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2014  


Помог: 0 раз(а)




А почему при объявлении константы define ("ROOT", dirname(__DIR__));она видна только в текущем каталоге. Это же глобальная константа, она везде должна быть видна. Но в других папках ROOT определяется как простая строка а уже не константа?
 
 Top
DeepVarvar Супермодератор
Отправлено: 25 Ноября, 2014 - 21:03:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Потому что надо все приводить к единой точке входа
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTTP и PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB