2012-05-03 5 views
11

から来た観光客は、こんにちは、私は参照元URLを取得しようとしているが、それは動作しませんすることは簡単ではあります訪問者がPaypalから来るサイトに着陸すればpaypalのURLを得る方法?

を編集し、明確化: 私はを含むがこれらに限定されない(ペイパルサイト上で特別な設定を持って見ていないよ:戻りURLを設定し、IPN、支払いデータ転送やペイパル上の他の特別な設定サイト)私が探しているのは、訪問者がPaypalからサイトに来たときにURLリファラーを取得することです(トランザクションが存在する場合)。手動

$ _SERVERからボブによって指し示されるよう

は、ヘッダ、パス、 とスクリプトの場所などの情報を含む配列です。この配列の>エントリは、 Webサーバーによって作成されます。すべてのWebサーバーが のいずれかを提供するという保証はありません。サーバはいくつかを省略したり、ここに記載されていない他のものを提供することがあります。

残っている唯一の質問は、この問題を回避する方法はありますか? PHP.netから引用

+4

なぜあなたはリファラーを必要としますか? PayPalを使用して返品URLを設定することができます。 – Devator

+2

Mmmm、それは私が尋ねるものや必要なものではありません... – user983248

+3

私はあなたが求めるものではないことを十分に認識していますが、達成しようとしていることを教えてくれれば、あなたの問題を最初に解決してください。 – Devator

答えて

27

あなたのサイトがHTTPS(HTTPSではなく)を使用していて、PayPalがHTTPSを使用している場合、参照元は送信されません!

HTTP RFC - 15.1.3 Encoding Sensitive Information in URI's状態:

クライアントが参照するページがセキュア プロトコルで転送されていた場合(非セキュア) HTTPリクエストにRefererヘッダフィールドを含むべきではありません。

したがって、リファラーを取得する唯一の方法は、サイトでHTTPSを使用することです。

+0

HTTPS経由で自分のサイトをホスティングしている可能性がありますか? – hakre

+0

@hakre yes、それはうまくいく – stewe

+0

あなたのサイトがHTTPSを使用している場合、あなたのサイトにリンクしている他のサイトのリファラーURLも取得できます(URLに '?u = username&pw =パスワード ')?例:http://stackoverflow.com/questions/499591/are-https-urls-encrypted#comment37812273_17905738 – trusktr

3

$ _SERVERは、ヘッダ、パス、スクリプトの位置などの情報を含む配列です。この配列の>エントリは、Webサーバーによって作成されます。すべてのWebサーバーがこれらのいずれかを提供する保証はありません。サーバーはいくつかを省略したり、ここにリストされていない他のものを提供することがあります。

+0

回避策はありませんか? – user983248

+0

@ user983248:回避策は、サーバー構成を確認し、探している変数が設定されていることを確認することです。しかし、参照元が見つからない場合は、サーバーを非難するだけでは不十分です。なぜなら、ブラウザがそれを送信しなければ、サーバーはそれを持っていないからです(以前のサイトがサーバーの場合は、 paypalの場合はHTTPS経由)。 – hakre

9

IPNを調べることができます。トランザクションが影響を受けたときに通知を送信します。
URL:https://www.paypal.com/ipn

+0

さて、私は知っていますが、まだ必要なものはありません – user983248

+1

+1これはリファーを使って*何でも*するよりも*はるかに良いアイデアです。 –

2

あなたのenlightment(コメント内)ありがとうございます。 Bobが述べたように、サーバーが送信した情報に頼ることはできません。私がやることは、支払い前にユーザーが行ったページを作成し、クッキー(またはセッション)を設定し、ユーザーをPayPalのWebサイトにリダイレクトすることです。ユーザーがあなたのウェブサイト(PayPal、リンク、または手動で)に戻ると、(クッキーまたはセッションを設定したときに)ペイボタンを押したことを知り、あなたが望むアクションを実行します。

これはあなたが尋ねたものではありませんが、許容される回避策かもしれません。

4

リファラはクライアントによって不幸に設定され、ブラウザ(またはプラグイン)によっては、リファラーがサーバに送信される内容を編集することができます。ユーザーが送信した "重要な"情報(あなたの場合は私が推測する)を信頼することは決して良い考えではありません。しかし、これはあなたがどこから来ているかに関してあなたが持っている唯一の情報です(paypalが提供できるものを使用しないことに決めた場合)。

1

あなたはJavaScriptでdocument.referrerを使用して、異なるpersepectiveからこの見れ

+1

HTTPSから非HTTPSへのリダイレクトが行われた場合、この変数は存在しません。 – Gajus

+0

それは?ありがとう.. – Stranger

0

が必要な場合は、アヤックスか何かを介してサーバにそれを送信することができます。彼らはPayPalに行く前から来たoutwhereあなたが検索を実行しようとしている場合あなたはサイトをPayPalに送っている(またはPayPalへの途中であなたのウェブサイト経由でリダイレクトさせる)ことができます。リダイレクトする前にあなたのウェブサイトにクッキーを設定し、戻ったときにクッキーを読むことができます。

申し訳ありませんが、あなたが必要とするものではなく、あなたがそれを考慮したことを確認するだけです(私もあなたがリファラーで勝つつもりはないと思います)。

関連する問題

 関連する問題