0

知道为什么此功能没有重定向到 paypal.com,而是我停留在同一页面上吗?curl 在服务器上被激活,安全模式被关闭并且 openbasedir 也被关闭。

function curl_post($url, array $post = NULL, array $options = array())
{
    $defaults = array(
        CURLOPT_POST => 1,
        CURLOPT_HEADER => 0,
        CURLOPT_URL => $url,
        CURLOPT_FRESH_CONNECT => 1,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_FORBID_REUSE => 1,
        CURLOPT_TIMEOUT => 4,
        CURLOPT_POSTFIELDS => http_build_query($post)
    );

    $ch = curl_init();
    curl_setopt_array($ch, ($options + $defaults));
    if( ! $result = curl_exec($ch))
    {
        trigger_error(curl_error($ch));
    }
    curl_close($ch);
    return $result;
}
curl_post("https://www.paypal.com/cgi-bin/webscr",$_POST);

知道我在做什么错吗?

4

2 回答 2

2

发出 curl 请求后:

foreach ($parameters as $key => $value) {
    $requestParams[] = $key . '=' . $value;
}
$requestParams = implode ('&', $requestParams);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $requestParams);
curl_setopt($ch, CURLOPT_RETURNTRANSFER);
curl_setopt( $ch, CURLOPT_AUTOREFERER, true);
$result = curl_exec($ch);

你应该得到准确的 url,知道你应该被重定向到哪里:

$location = curl_getinfo($ch)['redirect_url'];

然后重定向:

header('Location: '. $location);
于 2020-03-24T10:04:07.390 回答
0

cURL 只是一个用于发起和触发 HTTP 和 FTP 请求的库。您的代码只是向 PayPal 服务器发送一个HTTP POST请求。

为了重定向用户,发送一个Location标头(在任何输出之前!):

header('Location: https://www.paypal.com/...');
于 2013-09-04T17:53:08.990 回答