PHP:応答コードを確認する方法は?
-
27-09-2019 - |
質問
私はPayPalのIPNリスナーを実装する相対PHPの初心者だと、すべては私が本当に応答コードをチェックする方法を知らない。
を除いて、正常に動作しているようです私はcURLを持つ醜い何かを試してみたが、それは、すべての(私は理解のcURLないよ)。
で動作しません。私は、ネット上のどこかから取得するコードのこの部分を試してみた:
$fp = fsockopen('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
$response_headers = get_headers($fp);
$response_code = (int)substr($response_headers[0], 9, 3);
...しかし、それは働いていない(リターンを$ RESPONSE_CODE = 0)。
だから、今、私は応答200をチェックせず、私のIPNのコードをデバッグしています。
これを確認するために、適切な/簡単な方法は何ですか?の缶誰より経験豊富なアドバイスを私に
おかげ
解決
これはget_headers(の $ URL の)、ないget_headers($ FP)です。私は、それは完全に間違って読んでいる(と私は見たことがない他のいくつかのモードがあります)がない限り、あなたはそれをあなたが、いないソケットハンドルから読んでいるURLを渡す必要があります。それはあなたの現在のタスクのために役に立たないだろうので、実際に、それは明らかに、独自のGETを行います。
fsockopenの(...)低いレベル(TCP / IP)機能です。これは、ソケットハンドルではなく、CURLハンドルを返します。これは、あなたがそれにcurl_getinfo(...)を使用することができない理由です。あなたはこのような何かをしたい...
$fp = curl_init('https://www.sandbox.paypal.com/cgi-bin/webscr');
curl_setopt($fp, CURLOPT_POST, true);
curl_setopt($fp, CURLOPT_POSTFIELDS, $_POST);
curl_setopt($fp, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($fp);
$response_code = curl_getinfo($fp, CURLINFO_HTTP_CODE);
私が覚えているものを除き、あなたはポストフィールドに「CMD = _notify-検証」を追加する必要があります。
(...)fsockopenのは使用しないでください。うん、私は知っている、それは、ペイパルのサンプルコードが何をするかです。しかし、どこにでも実行するためのものだ、とCURLがインストールされているに頼ることはできません。あなたは、それを使用することができます。