簡體   English   中英

PHP curl —為CURLOPT_USERPWD使用變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM