Перейти к содержимому

Php с какой страницы пришел

  • автор:

PHP как проверить с какой страницы пришел запрос?

Мне нужно убедиться, что запрос в скрипт приходит с моего сервера. Я нашел $_SERVER[‘REQUEST_URI’] , но он показывает только относительный путь к самому файлу (/order/order.php) . Я использую скрипт через ajax, может в этом проблема? Как мне получить полный путь или как убедиться, что запрос с моего сервера?

Отслеживать
7,147 3 3 золотых знака 29 29 серебряных знаков 56 56 бронзовых знаков
задан 4 авг 2016 в 23:43
522 3 3 серебряных знака 16 16 бронзовых знаков

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Есть заголовок Referrer, который показывает откуда пришел запрос. Браузер может не отправить эту информацию, и тогда узнать нельзя.

Если браузер отправил эту информацию, то она лежит в $SERVER[‘HTTP_REFERRER’]

Адрес страницы (если есть), которая привела браузер пользователя на эту страницу. Этот заголовок устанавливается веб-браузером пользователя. Не все браузеры устанавливают его и некоторые в качестве дополнительной возможности позволяют изменять содержимое заголовка HTTP_REFERER. Одним словом, в самом деле ему нельзя доверять.

Если вы хотите сделать защиту от подделки запросов, вы можете добавить не угадываемый токен, известный только вашему серверу, в каждый запрос. При этом способе, если запрос приходит без подходящего токена, ему будет отказано в доступе, обычно это используют при защите от CSRF, которая приводит к тому, что хакер может выполнить на неподготовленном сайте массу различных действий от имени других, зарегистрированных посетителей.

Php с какой страницы пришел

Здесь могла бы быть ваша реклама

Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel

Помог: 3 раз(а)

Секрет
Теперь, когда вы уже наверняка второпях отправили свой запрос,
я расскажу вам простой секрет, который сэкономит вам уйму ожиданий,
даже если первый ответ по теме последуем сразу же.

Само собой я знаю что ответят мне тут же, и если я посмотрю
на сообщения на форуме, то пойму что в общем то я и не ошибаюсь.
Но еще я точно замечу, что очень мало тем, в которых всего два ответа :
вопрос автора и еще два сообщение вида Ответ + Спасибо

После этого приходится начинать уточнять этим неграмотным что мне надо.
Они что, сами читать не умеют? А уточнять приходится.
И иногда пока они переварят то что я им скажу проходит и не одна ночь..

Уверен что если бы я им сказал что у меня есть
фиолетовый квадрат, и нужно превратить его в синий треугольник
и я пытался взять кисточку, макнуть в банку и поводить ей по квадрату
но почему то кисточка не принимала цвет краски в банке,
то на мой вопрос — где взять правильные банки мне бы ответили гораздо быстрее
предложив её открыть, а не тратить еще стольник на жестянку.

Поэтому с тех пор я строю свои вопросы по проверенной давным давно схеме:
Что есть
Что нужно получить
Как я пытался
Почему или что у меня не получилось.

На последок как оно происходит на форумах

Цитата:

Новичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался!
Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется.
Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами!
Старожил: Какое дерево? Ты вообще соображаешь, что говоришь?
Новичок: Чем мне нравиться этот форум — из двух ответов ниодного конкретного. Одни вопросы неподелу!
Старожил: Не нравится — тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят, то лучше бы тебе сначала школу закончить.
Новичок: Не знаите — лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ.
Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю. А от вас нормального ответа недождёшся.
Прохожий: Самое крепкое дерево — дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
Новичок: Спасибо, братан! То что нужно.

Отредактировано модератором: Uchkuma, 26 Апреля, 2011 — 10:21:12

PHP как проверить с какой страницы пришел запрос?

Мне нужно убедиться, что запрос в скрип приходит с моего сервера. Я нашел $_SERVER[‘REQUEST_URI’], но он показывает только относительный путь к самому файлу (/order/order.php). Я использую скрипт через ajax, может в этом проблема?

Как мне получить полный путь или как убедиться, что запрос с моего сервера?

  • Вопрос задан более трёх лет назад
  • 4019 просмотров

Комментировать
Решения вопроса 1

$_SERVER['HTTP_REFERER'] // тут адрес страницы, с которой был отправлен запрос

Однако учтите, что данного свойства может и не быть. Поэтому всегда проверяйте его на наличие.

Если нужна 100% гарантия, отправляйте из вашего скрипта дополнительное свойство, например, referer_id (либо id, чтобы на сервере получить из предопределенного массива саму ссылку, если у вас скрипты расположены в четко определенных местах; либо саму ссылку).

Ответ написан более трёх лет назад
Комментировать
Нравится 3 Комментировать
Ответы на вопрос 1

p0vidl0

Неправильный вопрос. Ответ на правильный вопрос гуглится по запросу «CSRF».
Ответ написан более трёх лет назад
Комментировать
Нравится 4 Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

php

  • PHP
  • +2 ещё

Как решить проблему с миграциями?

  • 1 подписчик
  • 45 минут назад
  • 20 просмотров

Php с какой страницы пришел

В $HTTP_REFERER не попадет адрес от куда ты пришел, туда занесется автоматом только локальные переходы.. или же с удаленного урала должен передаваться параметр

http://your_server.com?HTTP_FERERER=mysite.com

— иначе HTTP_REFERER будет пуст.

А вот в случаи с джаваскриптом все намного проще. так как броузер хранит от куда пришел пользователь, то в переменной document.referrer — будет тот адрес перехода.
Лично, я делал в хедере проверку на джаваскрипте.. и делал редирект куда уже мне нужно.
Вот код:

function redirect() < var r = document.referrer; if (r) < var word = r.match(/(p|q)\=(.*?)(&|$)/i); if (word) < if (!(word[1])) < document.location = 'http://direct.site'; >else < document.location = 'http://your.site'); >> else < document.location = 'http://direct.site'; >> else < document.location = 'http://direct.site'; >> redirect();

в даном коде переадресация идет на адрес your.site — когда в реферер есть параметр q или p (обычно поисковые системы для передачи запроса используют эти параметры, но ты можешь еще проверит и на сам домен).
если этих параметров нет идет на так называемый директ.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *