11

こんにちは、リファラー URL を取得しようとしていますが、訪問者が Paypal からサイトにアクセスしたときに機能しません。

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

訪問者が Paypal からサイトにアクセスした場合、Paypal の URL を取得する簡単な方法はありますか?

編集と明確化: Paypal サイトで特別な設定を行うつもりはありません (IPN、リターン URL の設定、支払いデータ転送、または Paypal サイトでのその他の特別な設定を含むがこれらに限定されません)。見るということは、ビジターが Paypal からサイトにアクセスしたときに、トランザクションのステータス (トランザクションがあった場合) に関係なく、URL リファラーを取得することです。

マニュアルからボブが指摘したように

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

残された唯一の質問は、PayPal サイトで何かを設定せずに、これに対する回避策はありますか?

4

7 に答える 7

27

サイトが (HTTPS ではなく) HTTP を使用し、PayPal が HTTPS を使用している場合、リファラーは送信されません!

HTTP RFC - 15.1.3 URI の状態での機密情報のエンコード:

参照ページが安全なプロトコルで転送された場合、クライアントは (非安全な) HTTP 要求に Referer ヘッダー フィールドを含めるべきではありません。

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

于 2012-05-11T10:46:22.503 に答える
9

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

于 2012-05-03T12:21:35.657 に答える
4

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

于 2012-05-12T00:14:38.107 に答える
3

PHP.netから引用:

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

于 2012-05-03T11:54:45.483 に答える
2

あなたの啓発に感謝します(コメントで)。ボブが述べたように、サーバーから送信された情報を信頼することはできません。私がすることは、支払いの前にユーザーが移動しなければならないページを作成し、Cookie (またはセッション) を設定し、ユーザーを PayPal Web サイトにリダイレクトすることです。ユーザーが (PayPal、いくつかのリンク、または手動のいずれかを介して) Web サイトに戻ると、その人が (Cookie またはセッションを設定したときに) [支払い] ボタンを押して、必要なアクションを実行したことがわかります。

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

于 2012-05-03T17:48:04.737 に答える
1

必要に応じて、JavaScriptで使用document.referrerし、ajaxなどを介してサーバーに送信できます

于 2012-05-15T11:20:53.810 に答える
0

別の見方からこれを見てください:彼らがPayPalに行く前に彼らがどこから来たのかを調べようとしていて、あなたのサイトが彼らをPayPalに送っている場合(またはあなたは彼らをPayPalに行く途中であなたのウェブサイトを介してリダイレクトさせることができます)、リダイレクトする前にWebサイトにCookieを設定し、戻ってきたときにCookieを読み取ります。

もう一度申し訳ありませんが、必要なものではありませんが、検討したことを確認するだけです(リファラーで勝つとは思わないため)。

于 2012-05-17T10:05:27.963 に答える