Получите URL-адрес реферера - посетители, прибывающие из Paypal (HTTPS)

Привет, я пытаюсь получить URL-адрес реферера, но он не работает, когда посетитель приходит на сайт из Paypal

$ref = $_SERVER['HTTP_REFERER'];
echo $ref;

Есть ли простой способ получить URL-адрес PayPal, если посетитель приземлится на сайте, который поступает из Paypal?

Изменить и уточнить: Я не ищу никаких специальных настроек на сайте Paypal (включая, но не ограничиваясь: IPN, установить URL-адрес возврата, передачу данных платежа или любые другие специальные настройки на сайте Paypal). Все, что я ищу, это получить URL-адрес, когда посетители приходят на сайт из Paypal, расценивают статус транзакции (если таковой был).

Как указал Боб из руководства

$_ SERVER - это массив, содержащий информацию, такую ​​как заголовки, пути, и script. Элементы > этого массива создаются веб сервер. Нет гарантии, что каждый веб-сервер обеспечит любой из этих; серверы могут опускать некоторые или предоставлять другим, не перечисленным здесь.

Итак, остается только вопрос: есть ли какое-либо обходное решение для этого, не задав что-либо на сайте PayPal?

Ответ 1

Если ваш сайт использует HTTP (не HTTPS), а PayPal использует HTTPS, отправка Referrer отсутствует!

HTTP RFC - 15.1.3. Информация о кодировке в URI:

Клиенты НЕ ДОЛЖНЫ включать поле заголовка Referer в (незащищенном) HTTP-запрос, если ссылочная страница была передана с защищенным Протокол.

Таким образом, единственный способ получить Referrer - использовать HTTPS на вашем сайте.

Ответ 2

Вы можете проверить IPN. Он отправляет уведомление, когда на транзакцию влияет.
URL: https://www.paypal.com/ipn

Ответ 3

К сожалению, референт установлен клиентом, а некоторые браузеры (или плагины) позволяют пользователю редактировать, какой референт отправляется на сервер. Никогда не стоит доверять "критическим" (в вашем случае, я думаю) информации, отправленной пользователем. Однако это единственная информация, которую вы имеете о том, откуда приходит пользователь (если вы решите не использовать то, что может предложить PayPal).

Ответ 4

Цитата из PHP.net:

$_ SERVER - это массив, содержащий информацию, такую ​​как заголовки, пути и местоположения script. Элементы > этого массива создаются веб-сервером. Нет никакой гарантии, что каждый веб-сервер предоставит любой из них; серверы могут опускать некоторые или предоставлять другим, не перечисленным здесь.

Ответ 5

Спасибо за ваше просвещение (в комментарии). Как сказал Боб, вы не можете полагаться на информацию, отправленную сервером. Что бы я сделал, это создать страницу, к которой пользователь должен перейти до оплаты, установить cookie (или сеанс), перенаправить пользователя на веб-сайт PayPal. Когда пользователь возвращается на ваш сайт (через PayPal, некоторые ссылки или вручную), вы знаете, что человек нажал кнопку "Платить" (когда вы установили cookie или сеанс) и выполните действия, которые вы хотите.

Это не то, что вы просили, но может быть приемлемым обходным решением.

Ответ 6

Вы можете использовать document.referrer в javascript и отправить его на сервер через ajax или что-то еще, если вам нужно

Ответ 7

Глядя на это с другой стороны: если вы пытаетесь найти, откуда они пришли, прежде чем они отправились в PayPal, и вы отправляете их на PayPal (или вы можете перенаправить их на свой веб-сайт по адресу путь к PayPal), установите cookie на своем веб-сайте, прежде чем перенаправить их, а затем прочитайте файл cookie, когда они вернутся.

Извините, если снова не то, что вам нужно, а просто проверка, что вы его рассмотрели (так как я также не думаю, что вы выиграете у реферера).