Коротко и просто (для CLI):
м веб-приложении есть множество модулей. Каждый модуль имеет основной скрипт php, который загружает подмодули на основе запроса, отправленного главному модулю:
//file: clientes.php
//check for valid user...
//import CSS and JS...
switch( $_GET["action"] )
{
case "lista" : require_once("clientes.lista.php"); break;
case "listaDeudores" : require_once("clientes.listaDeudores.php"); break;
case "nuevo" : require_once("clientes.nuevo.php"); break;
case "detalles" : require_once("clientes.detalles.php"); break;
case "editar" : require_once("clientes.editar.php"); break;
default : echo "<h1>Error</h1><p>El sitio ha encontrado un error.</p>";
}
Этот основной модуль имеет дело с безопасностью и импортирует много ресурсов, которые нужны всем подмодулям. Большая проблема проявляется, когда пользователь запрашивает любой из подмодулей, минуя все меры безопасности на главном модуле! Моя идея состояла в том, чтобы добавить строку в каждый подмодуль, чтобы проверить, вызывается ли он напрямую и запретить доступ, или он вызывался через другой скрипт, и продолжить Меньше всего я хотел бы повторить проверку безопасности для каждого отдельного файла, так как он выполняет несколько запросов к базе данных.
Сценарий php знает, был ли он вызван черезrequire_once()
или прямой звонок? Я пытался реализовать какой-то$_SERVER['REQUEST_URI']
а также$_SERVER['PHP_SELF']
ловушка, но мне было интересно, есть ли какой-то элегантный способ сделать это.