-4

这是我的代码:

// post back to PayPal system to validate
$header .= "POST cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $header .="Host: www.paypal.com\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
    $header .="Connection: close\r\n\r\n";
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);

if (!$fp) { // HTTP ERROR
    echo 'HTTP ERROR';
} else {

    fputs ($fp, $header . $req);
    while (!feof($fp)) { $res = fgets ($fp, 2048); }

        if (strpos ($res), "VERIFIED") !== false) {
            switch ($transaction_type) {
                case "subscr_payment": 
                    if ($payment_status == "Completed" &&strtolower($receiver_email) == strtolower($receiverEmail)&&$currency=$payment_currency)

早些时候我曾尝试将trim语句输入这一行:

if (strpos ($res, "VERIFIED") !== false)

我将其更改为:

if (strcmp (trim($res), 'VERIFIED') == 0)
4

1 回答 1

2

您的“连接:关闭”标题(以 结尾\r\n)正确地后跟一个空行(即另一个\r\n),这是最后一个标题,但前一个标题(“内容长度”)也是如此。因此,“Connection: close”标头被视为有效负载的一部分。从前一个标题中删除空白行,即将倒数第二个更改\r\n\r\n\r\n. 事实上,我会同时更改它们,并\r\n在最后一个标题之后添加另一个打印,这样你就不会再像这样破坏它了。

于 2013-11-03T20:18:33.290 回答