[英]PHP curl — Using Variable for CURLOPT_USERPWD
有一個我找不到的問題。 我在這里有一個完美的卷曲功能:
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
的值CURLOPT_USERPWD
,發生我的錯誤:
$key = "user:pass";
使它成為CURLOPT_USERPWD => $key
該請求完全不進行身份驗證。 使用變量進行身份驗證時,這里是否缺少某些內容?
當您將CURLOPT_USERPWD
值作為$key
傳遞時,會發生此問題。
您還錯過了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'
);
今天也遇到了問題。
在curl_setopt_array()中使用CURLOPT_USERPWD不起作用,可能是錯誤嗎?
手動調用curl_setopt可解決此問題:
curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.