JS и PHP

Статус
В этой теме нельзя размещать новые ответы.

fafee

Постоялец
Регистрация
3 Окт 2008
Сообщения
92
Реакции
0
Eсть сайт, на котором отдельные файлы(Html, php) выводятся с помощью JS. Типичный попандер в центре окна с эффектами.
Можно ли средствами php запретить открытие этих файлов в броузере напрямую без этого JS?
То есть если, например, пользователь вобьет в адресную строку прямую ссылку на файл, получит редирект или error.page?

Спасибо.
 
Можно открывать из JS POST запросом, а в php файле проверять, установлены ли соответствующие поля запроса.
Если нужные поля не установлены, то показывать ошибку или переадресовывать.
 
в .htaccess
HTML:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?site.ru [NC] //сайт с которого поступает запрос(те реферер)
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?site1.ru [NC]//Зеркало
RewriteRule \.(php)$ - [NC,F,L]
но я не знаю JS передает реферер?
 
В php можно проверять на referer'а:
PHP:
if (strpos($_SERVER["HTTP_REFERER"], $_SERVER["HTTP_HOST"]) === FALSE) die("Error!");
Или так:
PHP:
if (strpos($_SERVER["HTTP_REFERER"], "domain.com/script.php") === FALSE) die("Error!");
 
Попробуй при открытии страницы через JS передавать на страницу переменную $_POST например 'check'. А в самом начале открываемых страниц php прописать:
if (!isset($_POST['check'])) {
//Редирект или сообщение об ошибке
exit;
}
 
jquery всегда посылает заголовок
HTTP_X_REQUESTED_WITH: XMLHttpRequest

можно сделать проверку
PHP:
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {
	exit_error('Only ajax');
}
 
Всем спасибо. Сработал метод tostrss:) Хотя, наверное, и другие работают, просто я их не смог реализовать ввиду своих знаний:ah:
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху