Я работаю над небольшим PHP-проектом. Я хочу включить много файлов PHP, но я хочу защитить их перед открытием по прямой ссылке другими людьми.
Например:
<?php include 'content/scripts/php/sample.php'; ?>
Я не хочу, чтобы люди получили доступ к sample.php
с помощью
http://samplepage.com/content/scripts/php/sample.php
Если вы находитесь на общем хостинге и не можете разместить файлы вне папки веб-сервера или не можете использовать .htaccess, общий метод заключается в определении константы в вашем основном php-файле, а затем проверке этой константы в верхней части каждого включенного file и die (), если не определены. Таким образом, люди могут получить доступ к файлу по его пути, но они увидят только пустую страницу. WordPress использует этот подход, например.
в вашем основном файле php:
define('APP', true);
во включенных файлах:
if(!defined('APP')) die();
Просто поместите их вне общей папки вашего веб-сервера (и, возможно, поиграйте с set_include_path для более легкого доступа к ним из ваших публичных файлов php).
Также вы можете решить это в самом PHP, например так:
index.php
<?php
define('PARENT_AVAILABLE', true);
include.php
<?php
if (!defined('PARENT_AVAILABLE')) die('Not allowed');