Вот пример моей файловой структуры.
/index.php /inc /inc/file1.php /inc/file2.php /inc/file3.php /search.php
index.php включает () file1.php, file2.php и file3.php. И я хочу, чтобы они были доступны только index.php.
Какое самое элегантное решение доступно?
благодаря
Получите их вне корня документа:
/documentroot/index.php /inc/file1.php /inc/file2.php /inc/file3.php
Таким образом, нет прямого доступа к ним.
В index.php вы можете определить константу следующим образом:
define('RESTRICTED',1);
Затем на других страницах вы помещаете это после <?php
if(!defined('RESTRICTED'))exit('No direct script access allowed!');
Когда к другим страницам обращаются напрямую, код выше показывает, что RESTRICTED не установлен, поэтому он будет завершен.
создайте файл .htaccess и поместите его в папку inc
<Files .htaccess> order allow,deny deny from all </Files> <Files *.php> order allow,deny deny from all </Files>
или поместите это поверх файла, который хотите отменить
if(strrchr($_SERVER['PHP_SELF'],'/')=='/file_name.php'){die;} // not good for ajax include