PHP curl - 为CURLOPT_USERPWD使用变量

时间:2014-12-08 06:13:32

标签: php curl

有一个我无法找到的问题。我在这里有一个完美的卷曲功能:

    function curl_get($url, array $get = NULL, array $options = array())
{
    $defaults = array(
        CURLOPT_URL => $url. (strpos($url, '?') === FALSE ? '?' : ''). http_build_query($get),
        CURLOPT_HEADER => 0,
        CURLOPT_RETURNTRANSFER => TRUE,
        CURLOPT_TIMEOUT => 4,
        CURLOPT_USERPWD => 'user:pass'
    );

    $ch = curl_init();
    curl_setopt_array($ch, ($options + $defaults));
    if( ! $result = curl_exec($ch))
    {
        trigger_error(curl_error($ch));
    }
    curl_close($ch);
    return $result;
}

当我尝试将变量用作CURLOPT_USERPWD的值时,会出现以下格式的错误:
$key = "user:pass";

制作CURLOPT_USERPWD => $key

请求根本不是身份验证。在使用变量进行身份验证时,我是否遗漏了一些内容?

3 个答案:

答案 0 :(得分:1)

当您将CURLOPT_USERPWD的值作为$key传递时,会出现此问题?

答案 1 :(得分:0)

您在CURL(即)CURLOPT_HTTPAUTH

中错过了另一个参数

所以你的代码应该如下所示,

$defaults = array(
    CURLOPT_URL => $url. (strpos($url, '?') === FALSE ? '?' : ''). http_build_query($get),
    CURLOPT_HEADER => 0,
    CURLOPT_RETURNTRANSFER => TRUE,
    CURLOPT_HTTPAUTH => CURLAUTH_ANY,
    CURLOPT_TIMEOUT => 4,
    CURLOPT_USERPWD => 'user:pass'
);

答案 2 :(得分:0)

今天也遇到了问题。

在curl_setopt_array()中使用CURLOPT_USERPWD不起作用,可能是个bug?

手动调用curl_setopt解决了问题:

curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass");