ID:               44456
 Comment by:       daniel at haxx dot se
 Reported By:      sergiocrz at hotmail dot com
 Status:           Open
 Bug Type:         cURL related
 Operating System: WinXP
 PHP Version:      5.2.5
 New Comment:

Those letters are not valid in a URL, described in RFC2396. (lib)curl
expects and requires a valid URL.


Previous Comments:
------------------------------------------------------------------------

[2008-03-19 02:34:31] [EMAIL PROTECTED]

> Why is it expected that curl returns false 
> ip when the url contains '#'?

AFAIK, the problem isn't the '#', but the '@'.

------------------------------------------------------------------------

[2008-03-19 02:28:19] sergiocrz at hotmail dot com

Why is it expected that curl returns false ip when the url contains
'#'?
If I use rawurlencode() to username and password CURL will consider
that encoded string as a new username and password, it will not be
decoded on exec. The returning error is: Access denied: 530. Thats
because the user and pass are incorrect...

By the results I have I still think there is a bug somewhere...

------------------------------------------------------------------------

[2008-03-19 00:09:18] [EMAIL PROTECTED]

This seems expected.
Normally app. accepts the format obtained for:
http://docs.php.net/manual/en/function.rawurlencode.php

Try using this function on login and password.

------------------------------------------------------------------------

[2008-03-17 16:27:31] sergiocrz at hotmail dot com

Description:
------------
When an ftp username or password uses the character "#" and when I try
to use it in 

curl_setopt($ch, CURLOPT_URL,
"ftp://$ftp_user_name:[EMAIL PROTECTED]:$ftp_port$path");

cURL will not login with the correct user/pass combination nor the
correct IP.


Reproduce code:
---------------
// using ex:  ftp://%e$U^&:[EMAIL PROTECTED]@123.145.123.145:456

$ftp_user_name = "%e$U^&" ;
$ftp_pass = "[EMAIL PROTECTED]" ;
$ftp_ip = "123.145.123.145";
$ftp_port = 456;
$path = "/";

 $ch = curl_init();

 curl_setopt($ch, CURLOPT_URL,
"ftp://$ftp_user_name:[EMAIL PROTECTED]:$ftp_port$path");
 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 4);  
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_FTPLISTONLY, 0);

 $result['filelist'] = curl_exec($ch); // content
 $result['error'] = curl_error($ch);
 $result['errno'] = curl_errno($ch);



Expected result:
----------------
Loggin in with the correct 
$ftp_user_name = "%e$U^&" ;
$ftp_pass = "[EMAIL PROTECTED]" ;
$ftp_ip = "123.145.123.145";
$ftp_port = 456;


Actual result:
--------------
cURL will connect to the IP: [EMAIL PROTECTED] as dysplayed by the
error.

As you can see the part before the ip "#$5%" belongs to the ftp_pass,
so I think when curl is parsing the url string and encounters "#"
(char(35)) it returns the wrong ip.




------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=44456&edit=1

Reply via email to