Получите 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, когда они вернутся.
Извините, если снова не то, что вам нужно, а просто проверка, что вы его рассмотрели (так как я также не думаю, что вы выиграете у реферера).