php中curl传输数据 php url传递参数

紧急求助 , 关于PHP中curl的cURL可以使用URL的语法模拟浏览器来传输数据,
因为它是模拟浏览器,因此它同样支持多种协议,
FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP等协议都可以很好的支持,包括一些:
HTTPS认证,HTTP POST方法 , HTTP PUT方法,FTP上传 , keyberos认证,HTTP上传,代理服务器 , cookies,用户名/密码认证,
下载文件断点续传 , 上传文件断点续传,http代理服务器管道 , 甚至它还支持IPv6,scoket5代理服务器,通过http代理服务器上传文件
到FTP服务器等等 。
这就是我们为什么要使用cURL的原因!
使用cURL完成简单的请求主要分为以下四步:
1.初始化,创建一个新cURL资源
2.设置URL和相应的选项
3.抓取URL并把它传递给浏览器
4.关闭cURL资源,并且释放系统资源
我们来采集一个页面,通常情况下,我们会使用file_get_contents()函数来获?。?
像这样:
?php
$str = file_get_contents('');
//或者是:
$str = file("");
//或者是:
readfile("");
?
这样我们会发现,我们没有办法有效地进行错误处理,更重要的是我们没有办法完成一些高难度的任务:
如:处理cookies,验证,表单提交,文件上传等等 。
好,现在我们来用代码完成上述cURL的四步:
?php
//1.初始化,创建一个新cURL资源
$ch = curl_init();
//2.设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, "");
curl_setopt($ch, CURLOPT_HEADER, 0);
//3.抓取URL并把它传递给浏览器
curl_exec($ch);
//4.关闭cURL资源,并且释放系统资源
curl_close($ch);
?
上述四步中,其中第二步最为关键,可以设置一些高级选项:
例如上例中的CURLOPT_URL和CURLOPT_HEADER,分别代表“需要获取的URL地址”和“启用时会将头文件的信息作为数据流输出” , 这些只是冰山一角,我们还可以设置很多选项:
选项 可选value值 备注
CURLOPT_AUTOREFERER 当根据Location:重定向时,自动设置header中的Referer:信息 。
CURLOPT_BINARYTRANSFER 在启用CURLOPT_RETURNTRANSFER的时候,返回原生的(Raw)输出 。
CURLOPT_COOKIESESSION 启用时curl会仅仅传递一个session cookie,忽略其他的cookie,默认状况下cURL会将所有的cookie返回给服务端 。session cookie是指那些用来判断服务器端的session是否有效而存在的cookie 。
CURLOPT_CRLF 启用时将Unix的换行符转换成回车换行符 。
CURLOPT_DNS_USE_GLOBAL_CACHE 启用时会启用一个全局的DNS缓存,此项为线程安全的 , 并且默认启用 。
CURLOPT_FAILONERROR 显示HTTP状态码,默认行为是忽略编号小于等于400的HTTP信息 。
CURLOPT_FILETIME 启用时会尝试修改远程文档中的信息 。结果信息会通过curl_getinfo()函数的CURLINFO_FILETIME选项返回 。curl_getinfo().
CURLOPT_FOLLOWLOCATION 启用时会将服务器服务器返回的"Location: "放在header中递归的返回给服务器,使用CURLOPT_MAXREDIRS可以限定递归返回的数量 。
CURLOPT_FORBID_REUSE 在完成交互以后强迫断开连接,不能重用 。
CURLOPT_FRESH_CONNECT 强制获取一个新的连接,替代缓存中的连接 。
CURLOPT_FTP_USE_EPRT 启用时当FTP下载时,使用EPRT (或 LPRT)命令 。设置为FALSE时禁用EPRT和LPRT,使用PORT命令 only.
CURLOPT_FTP_USE_EPSV 启用时,在FTP传输过程中回复到PASV模式前首先尝试EPSV命令 。设置为FALSE时禁用EPSV命令 。
CURLOPT_FTPAPPEND 启用时追加写入文件而不是覆盖它 。
CURLOPT_FTPASCII CURLOPT_TRANSFERTEXT的别名 。
CURLOPT_FTPLISTONLY 启用时只列出FTP目录的名字 。

推荐阅读