有一个我无法找到的问题。我在这里有一个完美的卷曲功能:
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
请求根本不是身份验证。在使用变量进行身份验证时,我是否遗漏了一些内容?
答案 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");