За последние 24 часа нас посетили 17556 программистов и 1610 роботов. Сейчас ищут 1136 программистов ...

Запрет непосредственной загрузки страницы

Тема в разделе "PHP для новичков", создана пользователем SkyKiller, 21 ноя 2007.

  1. SkyKiller

    SkyKiller Активный пользователь

    С нами с:
    1 ноя 2007
    Сообщения:
    166
    Симпатии:
    0
    Адрес:
    Новосибирск
    Приветствую всех!

    Возник следующий вопрос: как запретить пользователю непосредственное обращение к определённой странице, если перед этим не была посещена предыдущая?
    Пример:
    Есть некая форма, например, "Лицензионное соглашение" (agreement.php) вида:
    Код (Text):
    1.  
    2. ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ
    3. бла-бла-бла
    4. ...
    5. [ ] Я согласен с условиями
    6.  
    7. [ Submit ]
    Я проверяю чекбокс, что пользователь согласен, и он перенаправляется на страницу action.php.

    Вопрос: как запретить пользователю непосредственно загрузить action.php (например, вписать адрес руками), если он перед этим не согласился с agreement.php (даже если он на этом сайте вообще в первый раз)? Кукисы? Сессии?
    Если он впервые на сайте и грузит сразу action.php - надо, чтобы перекидывало на agreement.php
    В какую сторону рыть?
    Заранее благодарен!
     
  2. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    На agreement.php ставиш куку, на action.php чиитаешь!
     
  3. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    куки, сессии, $_SERVER['HTTP_REFERER']
    а вообще, устроить на второй странице опрос польователя по материалам первой :)
     
  4. SkyKiller

    SkyKiller Активный пользователь

    С нами с:
    1 ноя 2007
    Сообщения:
    166
    Симпатии:
    0
    Адрес:
    Новосибирск
    :D
    Всем спасибо, буду пробовать.
     
  5. shreck

    shreck Активный пользователь

    С нами с:
    7 авг 2007
    Сообщения:
    479
    Симпатии:
    0
    Адрес:
    Россия, Саратов
    Можно например, при заходе на первую страницу
    PHP:
    1.  
    2. <?php
    3. define("has_read_agreement", true);
    4. ?>
    5.  
    а в самом начале на второй странице
    PHP:
    1.  
    2. <?php
    3. if(!defined('has_read_agreement'))
    4. {
    5. die('Иди читай соглашение');
    6. }
    7. ?>
    8.  
     
  6. QQQ

    QQQ Активный пользователь

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    shreck
    и с каких это пор константы сохраняются после завершения работы скрипта??

    SkyKiller на самом деле рефер и заранее заданная кука - не спасает, подделывается всё уж больно просто... почитай про сессии в PHP, это как раз то, что тебе нужно :!:
     
  7. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    И тут кулцхакер будет время тратить на подмену куки, чтобы обойти соглашение, которое читать вовсе не обязательно.