2014-12-08 3 views
0

Имейте проблему, которую я не могу узнать. У меня есть совершенно рабочий локон функцию здесь:PHP curl - Использование переменной для 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 в формате:
$key = "user:pass";

делает его CURLOPT_USERPWD => $key

запрос не аутентифицируется вообще. Я что-то теряю здесь, когда использую переменную для аутентификации?

ответ

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' 
); 
+0

Спасибо за указание на это. Функция работала как отображается. Ошибка возникает при использовании ключа $ для CURLOPT_USERPWD, и я до сих пор не знаю, почему. –

+0

Я тебя не понял. что и где вы использовали ключ $? –

+0

Извините. $ key просто: '$ key =" user: pass ";' Так что мой код больше не работает, когда я меняю функцию: 'CURLOPT_USERPWD => $ key' –

1

Эта проблема происходит, когда вы передаете значение для CURLOPT_USERPWD как $key?

+0

Да точно. Я работал над этим, просто форматируя url как: 'https: // $ user. ':'. $ Pass. '@'. $ Url' –

+0

- это ключевое значение, подобное этому $ key = $ user. ' : '. $ pass – Anju

+0

Нет, его просто: '$ key =" john: password123 "; ' –

0

Также столкнулся с проблемой сегодня.

Использование CURLOPT_USERPWD в curl_setopt_array() не работает, может быть, ошибка?

Вызов curl_setopt вручную исправляет проблему:

curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass"); 
Смежные вопросы