在用户名中使用@进行CURL

时间:2011-04-15 19:45:29

标签: php curl

我尝试通过FTP上传CURL文件。但我的用户名有问题,在我的托管中所有的FTP用户名都是user@site.com,所以当我尝试上传时出现以下错误:

卷曲错误:无法解析主机'site.com:password@site.com'

以下是代码:

      $ftpuser = 'uploader@mysite.com';
      $ftppass = "blablabla";
      $ftppath = "mysite.com/";
      $ftpurl = "ftp://".$ftpuser.":".$ftppass."@".$ftppath;

有人可以告诉我如何通过用户名来解决问题。

2 个答案:

答案 0 :(得分:4)

两件事:

  1. 您应该可以使用urlencode转换非安全字符来解决@问题。
  2. 最好使用CURLOPT_USERPWD选项与curl_setopt设置用户名和密码对,我相信。
  3. 所以:

    <?php 
    
    $ftpuser = urlencode('uploader@mysite.com');
    $ftppass = urlencode('blablabla');
    $ftppath = 'mysite.com/';
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'ftp://' . $ftppath);
    curl_setopt($ch, CURLOPT_USERPWD, $ftpuser . ':' . $ftppass);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    $result = curl_exec();
    

答案 1 :(得分:0)

你可以单独给curl分配用户名和密码,而不是全部作为URL的一部分,这可能有助于它更正确地理解数据。