PHP curl——为CURLOPT_USERPWD使用变量

PHP curl——为CURLOPT_USERPWD使用变量,php,curl,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 =>

有一个问题我无法发现。我这里有一个完美的旋度函数:

    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


请求根本没有进行身份验证。在使用变量进行身份验证时,我是否遗漏了什么

您在
CURL
(即
CURLOPT\u 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'
);

当您将
CURLOPT_USERPWD
的值作为
$key
传递时,会发生此问题。

今天也遇到此问题

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

手动调用curl_setopt可修复此问题:

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

没错。我通过将url格式设置为:
https://$user.:'.$pass.@.$url
是键值,就像$key=$user.:'.$passNo,它只是简单的:
$key=“john:password123”谢谢你指出这一点。该功能按显示的方式工作。错误发生在对CURLOPT_USERPWD使用$key时,我仍然不知道为什么。我没有理解您。你在哪里用了$key?对不起$密钥很简单:
$key=“user:pass”
因此,当我将函数更改为:
CURLOPT_USERPWD=>$key
我可以拥有你的skypeID吗?对不起,我没有skype:,现在我正在使用下面发布的解决方法。在为USERPWD使用字符串变量时,似乎存在URL未格式化的核心问题。我这样说是因为回复是404,而不是403