Я пытаюсь заблокировать некоторые файлы с помощью php-скрипта, однако я хочу, чтобы мои javascript-вызовы ajax разрешали скрипты, я не знаю, возможно ли это, но ..
Что я сейчас делаю,
$filename = array('index.php'); $basename = basename($_SERVER['REQUEST_URI']); if(!in_array($basename, $filename)) { die('...'); }
Это заблокирует все файлы, а не index.php, но что, если у меня есть login.php, который делает мои вызовы ajax возможными?
Когда вы отправляете вызов JavaScript AJAX, он добавляет
X-Requested-With: XmlHTTPRequest
К заголовкам HTTP. Поэтому, если вы хотите что-то сделать в случае вызова AJAX, вы можете проверить что-то вроде этого:
$headers = getallheaders(); if($headers['X-Requested-With') == 'XMLHttpRequest') { // ... }
Имейте в виду, что любой HTTP-клиент может изменять заголовки, поэтому на самом деле он не добавляет никакой безопасности (но, например, браузер не мог напрямую вызвать ваши скрипты PHP с настройками по умолчанию).