По HTTP_REFERER и action формы

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

zek24

Мой дом здесь!
Команда форума
Модератор
Регистрация
14 Ноя 2009
Сообщения
811
Реакции
310
  • Автор темы
  • Модер.
  • #1
Привет,
столкнулся с небольшой проблемкой.
Есть форма на странице 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
Всё очень просто, переход в file.php осуществляется через заголовок, а запись в $_SERVER['HTTP_REFERER'] происходит, если переход был осуществлён по ссылке.
 
  • Автор темы
  • Модер.
  • #3
в пхп мануале пишется следующее(про ссылку ни слова)
'HTTP_REFERER'
Адрес страницы (если есть), которая привела браузер пользователя на эту страницу. Этот заголовок устанавливается веб-браузером пользователя. Не все браузеры устанавливают его и некоторые в качестве дополнительной возможности позволяют изменять содержимое заголовка HTTP_REFERER. Одним словом, в самом деле ему нельзя доверять.
Ну да ладно, как заставить проверку IF видеть, что пришли со страницы file1.php?
 
в пхп мануале пишется следующее(про ссылку ни слова)

Ну да ладно, как заставить проверку IF видеть, что пришли со страницы file1.php?
Сохранить флаг в сессию, а в скрипте 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']);
}
 
  • Заблокирован
  • #5
в пхп мануале пишется следующее(про ссылку ни слова)
В русском мане точно не было такого пункта, просто сам на эти грабли наступал, ответ в буржунете нашел.
А выхода два, передавать что-то GET запросом, что будет говнокодом, ибо можно подделать, либо же в файле file1.php, писать данные в сессию ($_SESSION).
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху