PHP HTTP Referrer - что если он не передан клиентом? - PullRequest
1 голос
/ 15 ноября 2011

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

Моя проблема возникает из-за того, что HTTP_REFERRER не всегда передается ...Типичные решения, которые люди делают, чтобы обойти это?Есть ли другой способ, кроме использования $ _SERVER для получения этой информации?

В качестве обновления ...

Сайт не мой, откуда они берутся....

Ответы [ 5 ]

1 голос
/ 16 ноября 2011

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

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

<a href="javascript:history.go(-1)">Return</a>

Но опять же, я не знаю в полной мереподробности о вашей ситуации.

0 голосов
/ 16 ноября 2011

Вы не можете ожидать, что клиент отправит HTTP_REFERRER.

. Вы можете добавить текущий URL к действию формы в качестве параметра GET.Другим решением может быть использование файлов cookie / сессий.

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

0 голосов
/ 16 ноября 2011

Вы не можете полагаться на HTTP_REFERRER, который будет установлен.(Или, если быть точным.) Простое (и единственное) решение состоит в том, чтобы спроектировать ваше приложение, чтобы элегантно справиться с ситуацией.Например, если вы не можете определить, откуда они пришли, отправьте их на общую страницу благодарности.

0 голосов
/ 16 ноября 2011

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

0 голосов
/ 16 ноября 2011

Это зависит от того, управляете ли вы сервером, который устанавливает http_refferer, или нет.Вы не можете рассчитывать на эту информацию, находящуюся там, поэтому вы должны контролировать некоторые пути пользователей.Например, вы можете передать переменную get, если знаете ссылку, по которой они будут приходить.Есть причина, почему вы должны сделать серьезный обходной путь, чтобы это работало.Потому что вы не можете доверять информации, поступающей от клиента.

...