Дата  Запланированые курсы
30.07 Рисование на компьютере при помощи планшета (базовый курс)
30.07 Adobe After Effects. Создание анимации и эффектов
13.08 Средства векторной графики. Adobe Illustrator
27.08 Поисковая оптимизация (SEO)
03.09 Введение в тестирование программного обеспечения
10.09 DEV-J-MP+. Расширенная комплексная программа "Разработчик прикладного программного обеспечения (Язык Java)"
10.09 DEV-J10. Программирование на платформе Java. Введение в язык Java
10.09 MOC-20740B. Установка, Хранение и Вычисления с Windows Server 2016
10.09 Поисковая оптимизация (SEO) для профессионалов
10.09 DEV-J-CP. Комплексная программа "Разработчик прикладного программного обеспечения (Язык Java)"
10.09 Поисковая оптимизация (SEO) для профессионалов
10.09 Компьютерное проектирование в системе AutoCAD (базовый курс)
10.09 MOC-10985. Введение в базы данных SQL
10.09 Основы создания веб-сайтов. Adobe Dreamweaver
10.09 DEV-C22. Стандарт С++11, С++14, С++17 для прикладного программирования
17.09 MOC-20761. Создание запросов данных при помощи Transact-SQL
17.09 DEV-J20. Программирование на платформе Java. Стандартные пакеты
17.09 Средства растровой графики. Adobe Photoshop
24.09 DEV-J30. Программирование на платформе Java. Разработка многоуровневых приложений
24.09 MOC-20741B. Сетевая инфраструктура на основе Windows Server 2016
01.10 MOC-20762. Разработка баз данных SQL
01.10 Компьютерное проектирование в системе AutoCAD (базовый курс)
01.10 Профессиональная верстка сайтов. HTML5 и CSS3
01.10 DEV-С-CP+. Расширенная комплексная программа «Разработчик прикладного программного обеспечения (Языки С и C++)»
01.10 DEV-C10. Процедурное программирование. Языки С/C++
01.10 Основы алгоритмизации и программирования (Группа I)
01.10 Основы алгоритмизации и программирования (Группа II)
02.10 DEV-J-MP+. Расширенная комплексная программа "Разработчик прикладного программного обеспечения (Язык Java)"
02.10 DEV-J10. Программирование на платформе Java. Введение в язык Java
08.10 MOC-20764. Администрирование инфраструктуры баз данных SQL
08.10 MOC-20742B. Инфраструктура идентификации на основе Windows Server 2016
08.10 DEV-J60. Технологии разработки корпоративных приложений на платформе Java Enterprise Edition (Java EE)
08.10 Введение в тестирование программного обеспечения
08.10 QA-QAAB. Автоматизация тестирования ПО (Базовый курс)
15.10 Компьютерное проектирование в системе AutoCAD (профессиональный курс)
15.10 Средства векторной графики. Adobe Illustrator
15.10 DEV-OCPJP. Подготовка к сдаче сертификационных экзаменов серии Oracle Certified Professional Java Programmer
22.10 MOC-20744A. Безопасность инфраструктуры средствами Windows Server 2016
22.10 Введение в тестирование программного обеспечения
22.10 MOC-10987. Настройка производительности и оптимизация баз данных SQL
22.10 Основы создания веб-сайтов. Adobe Dreamweaver
24.10 NET-DLINKSW-LAB. Технологии коммутации современных сетей Ethernet. Лабораторный практикум
25.10 DEV-J20. Программирование на платформе Java. Стандартные пакеты
29.10 MOC-10961B. Автоматизация администрирования с Windows PowerShell
07.11 DEV-C20. Объектно-ориентированное программирование. Базовый уровень. Язык С++
12.11 Профессиональная верстка сайтов. HTML5 и CSS3
12.11 Компьютерное проектирование в системе AutoCAD (базовый курс)
19.11 DEV-J30. Программирование на платформе Java. Разработка многоуровневых приложений
26.11 Средства растровой графики. Adobe Photoshop
26.11 Поисковая оптимизация (SEO)
03.12 Компьютерное проектирование в системе AutoCAD (базовый курс)
03.12 DEV-C21. Объектно-ориентированное программирование. Углубленное изучение. Язык С++
10.12 Основы создания веб-сайтов. Adobe Dreamweaver
10.12 Поисковая оптимизация (SEO) для профессионалов
10.12 Средства векторной графики. Adobe Illustrator
17.12 Компьютерное проектирование в системе AutoCAD (профессиональный курс)
09.01 DEV-C22. Стандарт С++11, С++14, С++17 для прикладного программирования
14.01 DEV-OCPJP. Подготовка к сдаче сертификационных экзаменов серии Oracle Certified Professional Java Programmer
04.02 DEV-QT10. Прикладное программирование на С++ с использованием Qt. Базовый уровень
11.02 DEV-J60. Технологии разработки корпоративных приложений на платформе Java Enterprise Edition (Java EE)
11.03 Введение в тестирование программного обеспечения
11.03 Введение в тестирование программного обеспечения
Открыт набор на осенний семестр в Академию информатики для школьников Открыт набор на осенний семестр на программы второго высшего образования
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Относительные и абсолютные пути
Takker
#1 Оставлено : 15 октября 2010 г. 16:12:09(UTC)
Ранг: Новичок

Группы: Зарегистрированные пользователи
Зарегистрирован: 23.05.2010(UTC)
Сообщений: 8
Баллов: 24

Здравствуйте!
Очень хотелось бы получить обоснованный ответ на вопрос: <b>что лучше использовать - относительные или абсолютные пути в создании php-скриптов?</b>

Лично я ратую за относительные пути - они универсальные и более удобные в плане переноса проектов с сервера на сервер. Однако недавно один разработчик высказал мнение, что использование относительных путей неоправданно с точки зрения безопасности. Без аргументов, правда. Но заставляет задуматься. Одним словом, необходимо мнение профессионалов.

P.S. Жажду ответа от Елены Сергеевны)
Реклама
Elena.Benker
#2 Оставлено : 15 октября 2010 г. 16:25:17(UTC)
Ранг: Активный Участник

Группы: Зарегистрированные пользователи
Зарегистрирован: 01.10.2005(UTC)
Сообщений: 136
Баллов: 408
Откуда: Russia St. Petersburg

Поблагодарили: 1 раз в 1 постах
Относительные пути, несомненно, удобны в смысле переноса.
Хотелось бы понять аргументы того разработчика.
Абсолютный путь можно писать явно, например: /var/www/html/mysite, что скверно и с точки зрения безопасности, т.к. показывает структуру каталогов на сервере.
С другой стороны, абсолютный путь в формате $_SERVER['DOCUMENT_ROOT']."/mysite" ничем не плох и комфортен при переносе проекта.
Takker
#3 Оставлено : 15 октября 2010 г. 16:43:42(UTC)
Ранг: Новичок

Группы: Зарегистрированные пользователи
Зарегистрирован: 23.05.2010(UTC)
Сообщений: 8
Баллов: 24

А если посмотреть со стороны дизайна? - особенно, если контент физически делится на директории, то есть запуск страницы и инициализация шаблона происходят из вложенных папок. Соответственно в шаблоне должно учитываться, откуда его вызывают.

Впрочем, это же надо учитывать и при использовании относительных путей.

Есть невнятное (личное) ощущение, что вызов одного и того же файла по относительному и по полному пути будет по-разному восприниматься сервером и иметь разное время исполнения.
Elena.Benker
#4 Оставлено : 15 октября 2010 г. 18:25:47(UTC)
Ранг: Активный Участник

Группы: Зарегистрированные пользователи
Зарегистрирован: 01.10.2005(UTC)
Сообщений: 136
Баллов: 408
Откуда: Russia St. Petersburg

Поблагодарили: 1 раз в 1 постах
Дизайн и структура каталогов - вещи несвязанные. Пути для указания шаблонов можно писать любым доступным способом, разницы нет.
Проверить ваше ощущение сложно, т.к. время выполнения скрипта ничтожно, но то, что пути, заданные разными способами, воспринимаются одинаково - это точно.
Тут просто нет почвы для разного времени исполнения, особенно если сравнивать со временем обращения к серверу баз данных или, тем более, со временем доставки страницы клиенту.
Takker
#5 Оставлено : 16 октября 2010 г. 3:53:49(UTC)
Ранг: Новичок

Группы: Зарегистрированные пользователи
Зарегистрирован: 23.05.2010(UTC)
Сообщений: 8
Баллов: 24

Углубившись в документацию, я нашел только одну однозначную рекомендацию - при указании пути к локальным файлам лучше использовать относительные пути, чем URL (во втором варианте, как я понимаю, запрос совершает своеобразный крюк.. думаю, что подтверждение есть где-то в модели osi).

Что же касается выбора между относительными и абсолютными путями, то тот самый разработчик пояснил - использование относительного пути делает код потенциально опасным, так как не исключает возможности инъекции - подмены пути. Ну, естественно, если разработчик не позаботился о безопасности дополнительно, а злоумышленник к тому же знаком с программой\скриптом\движком. Насколько это утверждение верно?
Elena.Benker
#6 Оставлено : 16 октября 2010 г. 14:32:05(UTC)
Ранг: Активный Участник

Группы: Зарегистрированные пользователи
Зарегистрирован: 01.10.2005(UTC)
Сообщений: 136
Баллов: 408
Откуда: Russia St. Petersburg

Поблагодарили: 1 раз в 1 постах
Нет в операционной системе никакого основания для каких-то крюков!
Подмена кода вообще - это, конечно, опасность. Но подменить можно любой фрагмент кода, не только пути.
Т.е. надо решать проблемы безопасности в комплексе.
Ведь в программе приходится хранить и пароль доступа к базе данных.
Мне кажется, что в погоне за безопасностью надо знать меру.
Takker
#7 Оставлено : 16 октября 2010 г. 15:04:03(UTC)
Ранг: Новичок

Группы: Зарегистрированные пользователи
Зарегистрирован: 23.05.2010(UTC)
Сообщений: 8
Баллов: 24

Большое спасибо, Елена Сергеевна, за подробные разъяснения.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.