2011-09-01 13 views
1

私のサイトでデジタル製品を販売しています。私はいくつかの種類のページ保護を設定したいと思います。私の顧客はPayPalで支払っています。 PayPalチェックアウトへの「送信」ページにリンクがあり、チェックアウトを設定して「情報」ページにリダイレクトしています。情報ページは私が保護したいものです。ここでPHPページ保護

<div id="info"> 
<ul> 
<li> 
<?php 
if ($_SERVER['HTTP_REFERER'] == "https://www.paypal.com/"){ 

echo 'information...'; 

}else{ 
echo 'You need to pay first...'; 
} 
?> 
</li> 
</ul> 
</div> 

誰もが私が間違ってやっているものを参照してください...私はこれまで持っているが、それは働いていない何らかの理由で、私は「それ以外」の文を取得しておくのコードですか?または、より良い選択肢がありますか?

ありがとうございます!いくつかのよう

+3

"誰もが私が間違ってやっているものを見ます?"あなたは '$ _SERVER ['HTTP_REFERER']'に依存しています。偽のリファラーを送るのは簡単です。 – ceejayoz

+1

リファラーは 'https:// www.paypal.com /'自体ではなく、 'www.paypal.com'ホストに含まれているページであるためです。 URLを解析してホストを確認してください。 – Ben

+0

あなたは何を保護しようとしていますか?支払った人にのみコンテンツを表示したいと考えていますか? –

答えて

3

$_SERVER['HTTP_REFERER']に==含まれて誰でも簡単に偽造することができます。あなたのセキュリティはどれくらい重要ですか? を支払うことなく誰もページにアクセスしないことが重要なのであれば、はHTTP_REFERERに依存しています。

私は長い間、paypalを使用していませんでしたが、私がしたときに支払いを確認するために使用するコールバックURLがありました。データフローは今、あなたは、取引情報の言うことを確認し、この

Your Server            Paypal 

                User submits payment form 
     <-----------Paypal sends transaction information to your callback url 

    You send the information back-----------------------------------> 

     <---------Paypal sends back confirmation that they sent you that data 
                (The data wasn't faked) 

のようになります。ユーザーが支払いを行った場合、そのレコードをデータベースに保存して、いつでも支払うことができるようにします。ここで

更新

はあなたが始めるためにペイパルからPHPコードのサンプルです:https://cms.paypal.com/cms_content/US/en_US/files/developer/IPN_PHP_41.txt

ページは、コールバック/通知ページとなります。保護したいページにそのコードを入れないでください。代わりに、そのページで支払いが確認されたときに情報をデータベースに格納し、保護しているページで支払いが確認されていることを確認します。

0

はHTTP_REFERERに頼ることは、あなたがこのリファラどうかを検出します私はこの

ような何かにあなたのコードを変更します を作業しようとしているものを手に入れるまでのところしかし、安全な

からで、コメントしています"https://www.paypal.com/" というし、

if (strpos($_SERVER['HTTP_REFERER'], "https://www.paypal.com/") !== FALSE)) { 
3

PayPalのIPNを使用してコールバックを処理します。これは、ユーザーが購入したことを疑うことなく確認します。 https://www.paypal.com/ipn

+0

私にこれを指摘してくれてありがとう、私は間違いなくそれを見て! – tcd

0

PayPalを使用する場合、商品の購入を処理する方法はいくつかあります。私はコールバックでオプションを提案します。 paypalコールバックデータを処理する特定のURLを指定します。そのURLでは、PayPal開発のドキュメントに記載されているようにデータ検証を行います。その場合、顧客がページにリダイレクトされたときに、DB内を検索して購入状況を確認します。コールバックデータがまだ受信されていない場合は、待機して再チェックします。 PayPalからコールバックを受け取った後、支払いがあったかどうかを明示的に知っている場合は、それに基づいて顧客にアクセスするか、アクセスしないかを選択する必要があります。

リフェラーを使用すると、多くの顧客がこの機能を無効にしていると見られています。また、これは簡単に変更することができ、あなたの「保護された」領域にはアクセスが容易になります。

よろしく、 J.

0
<? 
$ref=$_SERVER['HTTP_REFERER']; 
if (strpos($ref,'https://paypal.com') !== false) { 
    echo 'ok'; 
}else{ 
    echo 'error'; 
} 
?> 
+1

あなたのアプローチは質問に答えるかもしれませんが、質問者が直面する問題に対処する理由とその理由を説明する必要があります。 – jxh