По HTTP_REFERER и action формы

Тема в разделе "Как сделать...", создана пользователем zek24, 12 сен 2012.

Статус темы:
Закрыта.
  1. zek24

    zek24

    Moderator
    Регистр.:
    14 ноя 2009
    Сообщения:
    780
    Симпатии:
    238
    Привет,
    столкнулся с небольшой проблемкой.
    Есть форма на странице file.php с action=file1.php
    - после submit переходим на страницу file1.php,
    - скрипт делает свое грязное дело
    - далее, после исполнения скрипта, в file1.php стоит header('Location: file.php');
    - переходим на file.php
    - в file.php стоит проверка
    PHP:
    if ($_SERVER['HTTP_REFERER'] == "file1.php") {
        echo 
    "текст";
    }
    Но она почему то не срабатывает.
    На вопрос, какой же $_SERVER['HTTP_REFERER', получаем, что он = file.php
    Вопрос, почему не file1.php??
     
  2. Evilmolen

    Evilmolen Создатель

    Заблокирован
    Регистр.:
    9 авг 2010
    Сообщения:
    21
    Симпатии:
    15
    Всё очень просто, переход в file.php осуществляется через заголовок, а запись в $_SERVER['HTTP_REFERER'] происходит, если переход был осуществлён по ссылке.
     
  3. zek24

    zek24

    Moderator
    Регистр.:
    14 ноя 2009
    Сообщения:
    780
    Симпатии:
    238
    в пхп мануале пишется следующее(про ссылку ни слова)
    Ну да ладно, как заставить проверку IF видеть, что пришли со страницы file1.php?
     
  4. crazyzubr

    crazyzubr Создатель

    Регистр.:
    26 авг 2012
    Сообщения:
    23
    Симпатии:
    15
    Сохранить флаг в сессию, а в скрипте index.php сразу удалить.

    PHP:
    <?php
    #file1.php
    session_start();
    $_SESSION['referer_file1']=1;
    header('Location: file.php');
    PHP:
    <?php
    #file.php
    session_start();
    if (isset(
    $_SESSION['referer_file1'])){
    # необходимые действия
    #...
    unset($_SESSION['referer_file1']);
    }
     
    zek24 нравится это.
  5. Evilmolen

    Evilmolen Создатель

    Заблокирован
    Регистр.:
    9 авг 2010
    Сообщения:
    21
    Симпатии:
    15
    В русском мане точно не было такого пункта, просто сам на эти грабли наступал, ответ в буржунете нашел.
    А выхода два, передавать что-то GET запросом, что будет говнокодом, ибо можно подделать, либо же в файле file1.php, писать данные в сессию ($_SESSION).
     
    zek24 нравится это.
Статус темы:
Закрыта.