У меня проблема, которую я не могу узнать. У меня отлично работает функция завитка:
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
Запрос не аутентифицируется вообще. Я что-то теряю здесь, когда использую переменную для аутентификации?
Эта проблема возникает, когда вы передаете значение для CURLOPT_USERPWD
как $key
?
Также столкнулся с проблемой сегодня.
Использование CURLOPT_USERPWD в curl_setopt_array() не работает, может быть, ошибка?
Вызов curl_setopt вручную устраняет проблему:
curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass");
Вы пропустили еще один параметр в 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'
);
https://$user.':'.$pass.'@'.$url