Как подключить сторонний файл. В чем отличия include и require? — PROG-TIME

Как подключить сторонний файл. В чем отличия include и require?

17.07.2018
Содержание:

Всем привет. Сегодня я вас научу, как подключать сторонние файлы к файлу PHP. Когда вы подключаете сторонний файл, то весь код который находился в выбранном файле будет работать и на файле к которому он был подключен. Это может быть полезно, если у вас есть необходимые скрипты, которые должны работать на нескольких страница, но вы хотите избежать повторения кода.

И так, для реализации данного процесса есть несколько функций.

Самыми главными и часто используемыми функциями являются include и require. На собеседованиях, часто задают вопрос о их отличиях, поэтому это важно знать.

Отличие include от require.

Если вы находили следующую информацию о их отличиях.

Отличие include от require отличается в том, что require падает в Fatal error при невозможности подключения файла по любой причине. А include только выдает Warning и спокойно продолжает работу. От этого и надо исходить при выборе между ними. Если Вы подключаете файлы, в которых идет описание важных функций/классов/любых других вещей, без которых об успешной работе не может быть и речи, то имеет смысл использовать require.

Отличие _once от простых заключается в том, что файл не будет подключен второй раз при повторной попытке. Если в подключаемом файле находятся декларации функций и/или классов, то имеет смысл подключать такой файл с помощью _once, ибо попытка переопределения любой существующей функции приводит к Fatal error’у.

То сейчас, в новых версиях PHP, работа этих функций немного изменилась.

На данный момент конструкция require позволяет включать файлы в PHP сценарий до выполнения сценария PHP.
Конструкция include предназначена для включения файлов в код сценария PHP во время исполнения сценария PHP.
Приставка _once проверяет чтобы данный файл подключался только один раз.
И следовательно, на текущий момент, исходить надо из необходимости подключать файл до выполнения кода php, либо же во время его исполнения.
В первом случае к примеру мы должны прописывать путь до файла без использования переменных (так как интерпретатор подключает файл тогда когда он еще не работает с переменными — до исполнения сценарий php).
Во втором же случае можно динамически формировать путь к файлу с помощью переменных.

Как подключить файл из своего проекта.

Для того чтобы вызвать файл из вашего проекта, достаточно прописать следующую конструкцию.

require ('путь_к_файлу');

Так же есть второй способ подключения файла с помощью аналогичной функции, которую мы рассматривали ранее.

require_once($_SERVER['DOCUMENT_ROOT'].'file.php');

Здесь в качестве параметров тоже указывается путь к файлу, только в данном случае код $_SERVER['DOCUMENT_ROOT'] подставляет путь до главной директории, после чего вам нужно указать оставшийся путь.

Последний способ, это с помощью функции file_get_contents(). В этот раз мы научимся подключать файлы со сторонних сайтов. Для того чтобы работать с данной функцией мы создадим переменную, в которую запишем работу функции.

$a = file_get_contents("http://www.somedomain.com/file.php");
echo ($a);

Почему нельзя использовать include для подключения сторонних файлов

В PHP 5 функция include для удаленных файлов отключена по умолчанию, и, если ваш сервер использует другую версию PHP, но имеет безопасную установку, вы также столкнетесь с этой ошибкой.

Причина отключения PHP функции include для файлов достаточно простая — это позволит избежать межсайтовых скриптовых (XSS) атак. Это метод, с помощью которого кто-то из недоброжелателей может внедрить свой собственный вредоносный код в ваш, что, как правило, делается для проведения DoS и DDoS атак, а они в свою очередь приводят к падению сервака. Еще есть включения (заражения) в коде страницы, которые содержат и выводят на экран компьютера сообщения мол «такие-то хакеры сломали ваш сайт» вместо стандартного содержимого страницы.

Поэтому если вы собираетесь попросить хостера разрешить эту функцию для удаленных файлов, хорошенько подумайте еще разок.

На этом всё!
Больше интересных статей в нашей группе - https://vk.com/progtime
Вы так же можете разместить свой вопрос на нашем форуме, где другие программисты смогут вам помочь в решение вашей задачи - https://vk.com/prog_time
Так же прокачивайте свои навыки на нашем канале - https://www.youtube.com/c/ProgTime
Наши планы
  • Написание материала для курса по разработке ботов на Telegram
  • Разработка универсального парсера на PHP

Поддержите мой сайт!

Каждый переведённый донат, мотивирует на создание новых записей и уроков на YouTube

Контакты для связи

Технология на prog-time
Telegram
https://t.me/prog_time_bot