Проблемы с именем пользователя или с помощью двоеточия при настройке CURLOPT_USERPWD

Мы пытаемся использовать curl в PHP5 для входа на сайт с использованием базовой аутентификации.

Частичный код выглядит так:

<? ... $uname = "username"; $pass = "p:assword"; curl_setopt($ch,CURLOPT_USERPWD,"$uname:$pass"); ... ?> 

но кажется, что двоеточие в нашем пароле вызывает проблемы.

Мы не можем изменить пароль для нашего производственного сайта, но мы подтвердили, что код отлично работает на другом сайте, где используется буквенно-цифровое имя пользователя и пароль.

Есть ли способ избежать двоеточия в пароле, поэтому скручивание все еще работает? Мы попробовали «p \: assword» без везения.

Благодарю.

Related of "Проблемы с именем пользователя или с помощью двоеточия при настройке CURLOPT_USERPWD"

поэтому выясняется, что это не проблема с двоеточием …. это была проблема с схемой аутентификации.

сначала мы использовали:

 curl_setopt($curl_conn, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 

и переход на:

 curl_setopt($curl_conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 

исправлена ​​проблема.

У нашего теста на другом сервере были свои недостатки – на сервере, который работал, работало на IIS на окнах, на производственном сервере, с которым у нас были проблемы, был запущен apache на linux.

Поэтому я повторяю: по-видимому, нет проблем с использованием имен пользователей или паролей, содержащих двоеточия с завитом. это объясняет, почему не было документации по этой проблеме.

извините за прыжки к выводам и спасибо за помощь.

Я искал реализацию извлечения CURLOPT_USERPWD в curl-коде, вот как это делается. В строке username-passwd есть поиск вперед, ища символ «:». И затем извлекаются имя пользователя и passwd (строка before: is username и строка после: passwd)

Итак, как вы уже догадались, если строка username содержит символ:, все это закончится неудачей. Однако, поскольку шансы: character, являющегося частью имени пользователя, значительно меньше, это не сообщается как ошибка.

благодаря

Похоже, что документального решения нет, но вы можете попробовать это обходное решение:

 curl_setopt($ch, CURLOPT_URL, "http://{$uname}:{$pass}@www.test.com/login.php"); 

Но я его не тестировал.