Привет, я пытаюсь получить URL-адрес реферера, но он не работает, когда посетитель приходит на сайт из Paypal
$ref = $_SERVER['HTTP_REFERER']; echo $ref;
Есть ли простой способ получить URL-адрес PayPal, если посетитель приземлится на сайте, поступающем из Paypal?
Изменить и уточнить: я не ищу никаких специальных настроек на сайте Paypal (включая, но не ограничиваясь: IPN, установить URL-адрес возврата, передачу данных платежа или любые другие специальные настройки на сайте Paypal) Все, что я чтобы получить URL-референт, когда посетители приходят на сайт из Paypal, расценивают статус транзакции (если таковой имеется).
Как указал Боб из руководства
$ _SERVER – это массив, содержащий информацию, такую как заголовки, пути и места расположения сценариев. Элементы> этого массива создаются веб-сервером. Нет никакой гарантии, что каждый веб-сервер предоставит любой из них; серверы могут опускать некоторые или предоставлять другим, не перечисленным здесь.
Таким образом, остается только вопрос: есть ли какие-либо способы обхода этого решения, не устанавливая что-либо на сайте PayPal?
Если ваш сайт использует HTTP (а не HTTPS), а PayPal использует HTTPS, отправка Referrer отсутствует!
HTTP RFC – 15.1.3 Кодировка Чувствительная информация в состояниях URI :
Клиенты НЕ ДОЛЖНЫ включать поле заголовка Referer в (незащищенном) HTTP-запросе, если ссылочная страница была передана с защищенным протоколом.
Таким образом, единственный способ получить Referrer – использовать HTTPS на вашем сайте.
Вы можете проверить IPN. Он отправляет уведомление, когда на транзакцию влияет.
URL: https://www.paypal.com/ipn
Референт, к сожалению, установлен клиентом, а некоторые браузеры (или плагины) позволяют пользователю редактировать, какой референт отправляется на сервер. Никогда не стоит доверять «критической» (в вашем случае, я думаю) информации, отправленной пользователем. Однако это единственная информация, которую вы имеете о том, откуда приходит пользователь (если вы решите не использовать то, что может предложить PayPal).
Цитата из PHP.net :
$ _SERVER – это массив, содержащий информацию, такую как заголовки, пути и места расположения сценариев. Элементы> этого массива создаются веб-сервером. Нет никакой гарантии, что каждый веб-сервер предоставит любой из них; серверы могут опускать некоторые или предоставлять другим, не перечисленным здесь.
Спасибо за ваше просвещение (в комментарии). Как сказал Боб, вы не можете полагаться на информацию, отправленную сервером. Что бы я сделал, это создать страницу, к которой пользователь должен перейти до оплаты, установить cookie (или сеанс), перенаправить пользователя на веб-сайт PayPal. Когда пользователь вернется на ваш сайт (через PayPal, некоторые ссылки или вручную), вы знаете, что человек нажал кнопку «Платить» (когда вы установили cookie или сеанс) и выполните действия, которые хотите.
Это не то, что вы просили, но может быть приемлемым решением.
Вы можете использовать document.referrer
в javascript и отправить его на сервер через ajax или что-то в случае необходимости
Глядя на это с другой стороны: если вы пытаетесь найти, откуда они пришли, прежде чем отправились в PayPal, и вы отправляете их на PayPal (или вы можете перенаправить их на свой веб-сайт по пути в PayPal ), установите cookie на своем веб-сайте, прежде чем перенаправить их, а затем прочитайте файл cookie, когда они вернутся.
Извините, если снова не то, что вам нужно, а просто проверка, что вы его рассмотрели (так как я также не думаю, что вы выиграете у реферера).