2011-01-20 28 views
7

Chúng tôi đang cố gắng sử dụng curl trong PHP5 để đăng nhập vào trang web bằng cách sử dụng xác thực cơ bản.Sự cố với tên người dùng hoặc thông qua dấu hai chấm khi đặt CURLOPT_USERPWD

đang một phần là như thế này:

<? 
... 
$uname = "username"; 
$pass = "p:assword"; 

curl_setopt($ch,CURLOPT_USERPWD,"$uname:$pass"); 
... 
?> 

nhưng có vẻ như đại tràng trong mật khẩu của chúng tôi đang gây ra rắc rối.

Chúng tôi không thể thay đổi mật khẩu cho trang web sản xuất của mình, nhưng chúng tôi đã xác nhận mã hoạt động tốt trên một trang web khác sử dụng tên người dùng và mật khẩu chữ và số.

Có cách nào để thoát khỏi dấu hai chấm trong mật khẩu để cuộn tròn vẫn hoạt động không? Chúng tôi đã thử "p \: assword" mà không có may mắn.

Cảm ơn.

+0

Bạn có thể thoát nó bằng \: không? Dường như không có bất kỳ tài liệu nào về điều này. – Merijn

Trả lời

6

nên nó chỉ ra rằng nó không phải là một vấn đề với dấu hai chấm .... đó là vấn đề với lược đồ xác thực.

lúc đầu chúng tôi đã sử dụng:

curl_setopt($curl_conn, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 

và thay đổi để:

curl_setopt($curl_conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 

cố định vấn đề. Thử nghiệm của chúng tôi đối với một máy chủ khác có lỗi của nó - máy chủ hoạt động đã chạy IIS trên các cửa sổ, máy chủ sản xuất mà chúng tôi gặp sự cố đang chạy apache trên linux.

Vì vậy, tôi lặp lại: dường như không có vấn đề gì với việc sử dụng tên người dùng hoặc mật khẩu có chứa dấu hai chấm với curl. điều này giải thích tại sao sẽ không có tài liệu về vấn đề này.

xin lỗi vì đã đi đến kết luận và cảm ơn sự giúp đỡ.

+0

Tôi nghĩ bạn sẽ thấy rằng 'CURLAUTH_DIGEST' sẽ là phương thức được chọn trong nội bộ, vì điều này thường so sánh một băm của' người dùng: noonce: pass', làm cho bất kỳ dấu hai chấm bổ sung nào không có hậu quả. – calcinai

0

Dường như không có giải pháp thành văn bản, nhưng bạn có thể thử cách này:

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

Nhưng tôi đã không kiểm tra nó ..

1

Tôi đã tra cứu việc triển khai trích xuất CURLOPT_USERPWD trong mã curl, Đây là cách thực hiện Có searh chuyển tiếp trên chuỗi tên người dùng-passwd, tìm ký tự ":". Và sau đó tên người dùng và mật khẩu được trích xuất (chuỗi trước: là tên người dùng và chuỗi sau: là passwd)

Vì vậy, như bạn đã đoán, nếu chuỗi tên người dùng chứa ký tự: tất cả điều này sẽ không thành công. Tuy nhiên, vì cơ hội của: ký tự là một phần của tên người dùng ít hơn đáng kể, điều này không được báo cáo là lỗi.

cảm ơn

Các vấn đề liên quan