@nikolaypetrov

Как в PHP закрыть доступ к скрипту?

Имеется php-скрипт.

Может запускаться через инклуд, может принимать обращения через ajax.

Как запретить доступ к нему по прямой ссылке? Возможно ли это как-то без htaccess?
  • Вопрос задан
  • 8192 просмотра
Пригласить эксперта
Ответы на вопрос 5
Воу воу. В index.php создайте константу которую будете проверять, и после во всех подключаемых файлах проверяйте ее.

// index.php - до подключения других файлов
define('MY_CONSTANT', TRUE);


// во всех подключаемых файлах делайте проверку
<?php
if (!defined('MY_CONSTANT')) exit('No direct script access allowed.');

class MY_Class {
....
}


п.с. не посмотрел дату вопроса)) но может пригодится
Ответ написан
Комментировать
FanatPHP
@FanatPHP
Чебуратор тега РНР
Оставь этот файл в покое. Никому он не нужен.
Куда важнее для тебя разобраться, что
1. К информационной безопасности твой вопрос не имеет ни малейшего отношения
2. "Закрыть" этот файл от доступа извне в принципе невозможно.
3. Все вышеперечисленное плюс любимое заклинание "хтаксесс! хтаксесс!" говорит нам, что ты не понимаешь, как устроена система браузер-сервер. И вот это-то в сто раз важнее твоего несчастного файла. Тебе надо понять, как устроено веб-приложение, где у тебя РНР, а где... Как только ты это поймешь, то дурацких вопросов типа этого у тебя уже возникать не будет.
Ответ написан
if (preg_match('/' . preg_quote($_SERVER['PHP_SELF'], '/') . '$/i', str_replace('\\', '/', __FILE__))) {
    exit();
}
Ответ написан
thestump
@thestump
программист PHP
@ollisso
Если перифразировать вопрос так : как дать возможность открывать файл только с помощью аякса , но не давать по прямой ссылке то ответ прост:
Проверяй что это аякс запрос и если это не он то выходите.

Пример проверки:
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
	// аякс
}else{ 
// не аякс
}


Конечно это не защита от хакеров и тп. Только защита от прямого открытия в браузеру

Такой заголовок может добавить кто угодно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы