Я работаю через более старый php mysql книга, записанная в 2003. Автор использует включение () функция для построения страниц HTML включением header.inc, footer.inc, main.inc файлы, и т.д. Теперь я узнаю, что это не позволяется в значении по умолчанию ini настройки, (allow_url_include установлен на Прочь) после того, как я получил много предупреждений от сервера.
Я заметил также, что можно использовать, включают без круглой скобки. Я попробовал это, и это работает, и я не получаю сообщений об ошибках или предупреждений. Эти два отличаются? Таким образом, включают () отличающийся от, включают?
Использование include () может ввести уязвимое включение локального файла (LFI) или включение удаленного файла (RFI) . Вам следует избегать использования include, например , если вы включаете HTML , лучше написать print (file_get_contents ($ file))
, чем include ($ file)
. Однако использование PHP-файлов include ()
необходимо в большинстве приложений PHP для уменьшения дублирования кода.
Даже если удаленное включение файлов отключено, все еще можно использовать систему с помощью расширенной атаки LFI .
Если вам нужно принять ввод пользователя в include ()
, убедитесь, что он находится в белом списке:
$good_includes=array("contact","home","view");
if(in_array($_GET[page],$good_includes)){
include("inc/".$_GET[page].".php");
}
Это недоразумение. Вы можете отключить включение удаленных файлов (используя URL http://www.example.com/include.php
вместо пути к файловой системе). Вы всегда можете включать локальные файлы.
Последнее объясняется тем, что include
- это не обычная функция, а языковая конструкция. Как и die
, она может использоваться как с круглыми скобками, так и без них. Источник: Руководство
Поскольку include() - это специальная языковая конструкция, круглые скобки вокруг ее аргумента не нужны. Будьте осторожны при сравнении возвращаемого значения.
Функция include
хороша для динамического включения файлов. Если мы включаем файлы в цикле, это очень хорошо. Но если мы включаем файлы статически, то следует использовать require
. Вторую функцию сделайте в начале скрипта.
Есть большая разница с include
/require_once
и require
.
Основное различие заключается в сообщении об ошибках, если вы используете include в вашем приложении, PHP попытается загрузить файл, но если он не существует, он выдаст не фатальную ошибку (то есть ваш скрипт не остановится), если вы используете require
, то скрипт остановится и прекратит обработку.
Используйте require
для файлов, которые являются фундаментальными для вашего приложения и используйте include
в ваших шаблонах, потому что в случае ошибки вы можете указать не показывать ошибку и таким образом пользователь не заметит разницы, если это не основной шаблон include, такой как header.php
эти функции в основном используются на вашем собственном сервере для включения файлов, которые имеют отношение к вашему приложению.
если вы включаете файлы извне вашего сервера, то я бы использовал curl, если он установлен, или file_get_contents()
.
Надеюсь, это вам поможет.
просто заметка о require
против require_once
, require_once
добавит логику, чтобы убедиться, что файл не будет включен более одного раза, т.е. вы не хотите объявлять подключение к базе данных более одного раза