вопрос про доступ к странице

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

umjammer

Профессор
Регистрация
4 Июн 2007
Сообщения
342
Реакции
44
Скажите пожалуйста как организовать следующий механизм:
Есть страница с формой(например test.ru/?add)
После заполнения данной формы человек должен попасть на следующую страницу (например forms.html). Нужно сделать так, чтобы нельзя было попасть на страницу forms.html путем простого набора ее адреса в браузере (test.ru/forms.html). Доступ к ней должен осуществляться только с конкретной страницы.
 
Переменная _SERVER["HTTP_REFERER"]
содержит полный адрес откуда пришел пользователь на эту страницу к примеру:Для просмотра ссылки Войди или Зарегистрируйся

Задай проверка, чтобы переменная содержала нужный адрес и все
 
  • Заблокирован
  • #3
пологаю тут стоит подумать над алгоритмом сначала..
самому писать лень, тут хорошая статья на тему..


а так, а принимающем скрипте пишешь что то типа
PHP:
if(empty($_SERVER["HTTP_REFERER"]) or !eregi('адрес_откуда_должен_быть переход', $_SERVER["HTTP_REFERER"])){
    header('Location: адрес_скажем_страницы_с_формой');
    exit();
}
// тут действия
 
У некоторых рефферы отключены, лучше делать через сессии или куки.
 
  • Заблокирован
  • #6
У некоторых рефферы отключены, лучше делать через сессии или куки.
так и куки могут быть отключены или ограниченны, что куда как чаще встречается..

можно подробнее?
речь идет об этом

например инициализируешь сессию, в скрипте с формой заносишь в нее переменную с каким-либо значением, а в принимающем проверяешь переменную на наличие и значение.. в принципе подход тот же..

другое дело, если у тебя и форма и обработка в одном файле (имхо в идеале так и делать).. тогда просто в начале проверяешь глобальный массив $_POST на наличие нужных значений.. если есть - обрабатываешь, и реферишь скрипт сам на себя (или еще куда), чтоб $_POST очистить, если нет - показываешь форму..
и никакой головной боли ни с куками, ни с реферами..
 
bueno, а если количество таких форм динамически меняется? (например, формы генерируются в зависимости от каких-либо параметров клиента)?

Что в таких случаях делают?
Заводить массив таких переменных?

Просто как тогда потом узнать какому элементу массива соответствует какая-то данная форма?
 
  • Заблокирован
  • #8
ну ведь генерация формы подчинена какой-то логике.. следовательно по данной логике ты и данные формы обрабатывать можешь..

а если форм много, и ты не знаешь от какой могут прийти данные, никто не мешает передать указатель формы, например, через $_GET (<form action="?formID=formX">) или дополнительным скрытым полем (через $_POST) - <input type="hidden" name="formID" value="formX" />.. ну а при приеме данных в зависимости от указателя формы выбрать соответствующую логику..
 
С точки зрения безопасности лучше всего при входе юзера на страницу назначать ему какой-нибудь ID и привязывать его к айпи и куке (сюръективно), а ID сохранять на сервере в базе, либо в файле, либо еще как. И на второй странице делать вызов функции, дающей сюръекцию на множество файлов от наших парметров и проверять его наличие. Если есть - пускать, иначе - нет. И таймаут добавить.
 
  • Заблокирован
  • #10
nami144 и вот нафига все это?.. проверяешь точное соответствие рефу и наличие не пустого пост массива / указателя формы и все.. не совпадает и/или нет рефа и пустой пост / неизвестная форма - не обрабатываешь данные.. вот и вся тебе "сюръекция" - хер прорвешься..
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху