用户名中带有@的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;
有人可以告诉我如何传递用户名解决问题。     

解决方法

两件事情: 通过使用
urlencode
转换非安全字符,您应该能够解决
@
问题。 我相信,最好将
CURLOPT_USERPWD
选项与
curl_setopt
一起使用来设置用户名和密码对。 所以:
<?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();
    ,您是否可以分别给curl用户名和密码(而不是全部作为URL的一部分),以帮助它更正确地理解数据。