JS и PHP

Тема в разделе "PHP", создана пользователем fafee, 6 июл 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. fafee

    fafee Постоялец

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

    Спасибо.
     
  2. SolarWind

    SolarWind Создатель

    Регистр.:
    18 авг 2008
    Сообщения:
    42
    Симпатии:
    11
    Можно открывать из JS POST запросом, а в php файле проверять, установлены ли соответствующие поля запроса.
    Если нужные поля не установлены, то показывать ошибку или переадресовывать.
     
  3. swer

    swer

    Регистр.:
    15 июн 2008
    Сообщения:
    305
    Симпатии:
    38
    в .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 передает реферер?
     
  4. alexz15

    alexz15

    Регистр.:
    3 окт 2008
    Сообщения:
    394
    Симпатии:
    191
    В 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!");
     
  5. leon4uk

    leon4uk Писатель

    Регистр.:
    17 июл 2008
    Сообщения:
    4
    Симпатии:
    1
    Попробуй при открытии страницы через JS передавать на страницу переменную $_POST например 'check'. А в самом начале открываемых страниц php прописать:
    if (!isset($_POST['check'])) {
    //Редирект или сообщение об ошибке
    exit;
    }
     
  6. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    jquery всегда посылает заголовок
    HTTP_X_REQUESTED_WITH: XMLHttpRequest

    можно сделать проверку
    PHP:
    if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {
        
    exit_error('Only ajax');
    }
     
    fafee нравится это.
  7. fafee

    fafee Постоялец

    Регистр.:
    4 окт 2008
    Сообщения:
    92
    Симпатии:
    0
    Всем спасибо. Сработал метод tostrss:) Хотя, наверное, и другие работают, просто я их не смог реализовать ввиду своих знаний:ah:
     
Статус темы:
Закрыта.