php中使用cURL

  [复制链接]

2081

主题

2095

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35774
admin 发表于 2021-5-29 16:25:32
26347 102
课程目录, v  R- P4 n1 q) N6 L# `. l

( a2 b# u: l/ _+ n6 Z1、curl是什么9 X, W$ x) M! }. ?( W' X

! ~; t5 _9 ?- P2 x6 U% r百度百科给的解释是:数据传输神器。那它神器在什么地方那,通过查找资料得出curl可以使用url的语法模拟浏览器来传输数据,因为是模拟浏览器所以它支持多种的网络协议。目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。1 e1 H. T/ T# L6 G! B$ O# M
php中使用最多的是通过curl来模拟get和post请求。
/ F; F0 ~8 {$ [" h0 l7 T
+ |" V4 G& i3 v7 ]2、如何使用curl2 g1 t* {7 z( ~, O
5 `- m3 }9 y; E
(1)、要想使用curl,第一步先要在php中开启curl,在php配置文件php.ini中找到extension=php_curl.dll,把前面的‘;’去掉。重启服务器。在php代码中用phpinfo()打印,发现图中curl说明开启成功。
7 u3 X( H& r7 A( d
9 y, d9 n3 |9 f
' A6 `+ A& I% g% _8 V, x& F(2)、使用curl完成简单的请求主要分为四大步:) ^8 f7 ]6 z1 m9 T; L8 N- j

6 n/ h, N2 R' Q; j7 q* O6 a. U/ R) y% a/ k% u
1).初始化,创建一个新的curl资源。2 _# w% u* W& ^, L$ J

3 C; B; Z) r& `, V; |9 r5 \5 |5 N. i" j( D
2).设置url和相应的选项
9 v) E+ h8 Z  Q. E& n. f+ C5 M9 |1 h4 o. M1 A# u; ~

1 P/ D* c& [- D* J7 `3).抓取url并把他传递给浏览器7 }8 X% j# Q; \( S% }/ k+ v: s% R
8 s' E1 a. z1 N3 j' a2 `3 b5 n' n4 U
% ]3 x; R9 A9 x
4).关闭curl资源。把资源释放。
2 E" M. s, h5 Y7 G6 i/ l
; q* F& b5 _4 f" Y2 P$ }$ a6 T' E: H

$ ?, P, S3 e' z* R$ j  w9 I2 ]复制代码
. x- T2 S, u- J0 `
% _8 P' o2 ]" V* n 1         $MyAES = new MyAES();5 B* \$ ~+ n) U
2         $jiaRes = $MyAES->desEncryptStr($data,"1102130405061708");8 o) n: c- k3 L& a
3         $header[] = "Content-type: text/xml;charset=UTF-8";/ \1 W$ k! j# P! @2 j
4         $ch = curl_init();
# U7 H$ E* i$ k, j5 p" W; h4 C 5         curl_setopt($ch, CURLOPT_URL,REURL);+ D0 F# `& E: q& K' Z1 J, h
6         curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
+ {8 g, m0 c( { 7         curl_setopt($ch, CURLOPT_HTTPHEADER,$header);, O6 C2 _1 n& J- m$ N" z# t; r
8         curl_setopt($ch, CURLOPT_POST, true);. U% d2 H3 T; q, V, ?) U
9         curl_setopt($ch, CURLOPT_POSTFIELDS, $jiaRes);
6 K3 J" n! {* x  {- k9 c& y10         $aa = curl_exec($ch);% s3 w2 y) I' e. N
11         // grab URL, and print    , v3 d4 W: D% u$ W) B0 ^5 E
12         if(curl_errno($ch)){3 B7 p) D: w% }8 a9 x1 ^
13             print curl_error($ch);
8 }1 G7 o8 T, g! K14         }
+ X9 d  Q* C. [1 o0 x15         curl_close($ch);   
& b: T: N3 v5 v! [9 U; E2 g7 n$ x6 W- I
复制代码% f, g  \9 D& |
- g6 X7 _, Q, J1 P# s5 g6 P% P4 j: e
. ~6 T6 i4 z! F6 h# Y/ z
贴上项目一段代码,好好的分析一下。
* R: @+ U/ ?4 l3 R* V
$ @! n1 V. \9 j. J- o2 y. M- G6 W; X; r/ n& Z5 o' M1 q
curl_init这个是初始化,创建一个新的curl资源。
6 z" s: V/ V* Y3 b% ?1 u( c$ k6 d' l
curl_setopt这个是php的函数。设置一个curl传输选项。) q; J3 n% y: i" }3 n4 I$ j
根据php手册对curl_setopt这个函数说明一下,这个函数需要传三个参数,第一个是curl句柄(我的理解就是那个创建的curl资源)。第二个是需要设置的curlopt_XX选项。第三个参数就是选项对应的值。% R  j* o- I8 R0 z. h: i5 ?4 X

" x4 x  x$ c! p9 |' e. W) M; U& _curl_exec函数是执行curl会话。这个函数是初始化一个curl并且全部的选项都设置之后再调用。
$ T8 |9 R9 h! k/ D成功时返回 TRUE, 或者在失败时返回 FALSE。 然而,如果 CURLOPT_RETURNTRANSFER选项被设置,函数执行成功时会返回执行的结果,失败时返回 FALSE 。
# {5 K' j0 Z" a, Y* G% N" R/ z) y" J6 C( |! T0 [3 n
CURLOPT_URL 需要获取的url地址         CURLOPT_RETURNTRANSFER 将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
$ {- }" F) s1 t7 e: n% B3 X
7 {6 m7 e. g% B. u: Z' D4 U. ~6 j. JCURLOPT_HTTPHEADER  一个用来设置HTTP头字段的数组。使用如下的形式的数组进行设置: array('Content-type: text/plain', 'Content-length: 100') / T, X) f; t) G' b7 f' C

8 u7 @' X( T5 C# v' kCURLOPT_POST 启用时会发送一个常规的POST请求     CURLOPT_POSTFIELDS  全部数据以http协议中post方式发送。
* j2 u- R/ P" n: Y0 u( D$ Z8 K% |' Z( i$ g# r6 A' D
# F( l; ]) u$ @! p4 F) L; _1 Q
跟多curlopt对应的设置请查看php文档 http://php.net/manual/zh/book.curl.php
+ o1 k& E# I" @9 f9 z: S0 i" X+ c  H, K# g
特意说明一下curl_setopt_array — 为 cURL 传输会话批量设置选项. k) [9 z: q. m# {) j. L* ?
使用案例为$ S3 G. w& S7 v1 L; Z$ H

& j) v" q3 i7 h! N; A; z4 b
0 w- Z% k$ k- o) s复制代码
; X0 l# a' b$ c# ^6 h: Q1 i: }) q. z
1 <?php
" z' b  X4 x! E' m 2 // 创建一个新cURL资源
- c+ M5 @2 J% d% v! Z 3 $ch = curl_init();, V% D! M3 o+ G' @% \
4
( E6 B: u3 f6 B/ J* F" W8 V( d 5 // 设置URL和相应的选项2 e5 M" r- j# S) `9 p
6 $options = array(CURLOPT_URL => 'http://www.example.com/',
0 |" d  {2 [  r- ~ 7                  CURLOPT_HEADER => false8 u, q; v9 z# G- x$ C
8                 );
9 I- Y' S7 v; j9 S! A% v# z2 j3 j 9 - g) m2 r$ f8 l  h) G
10 curl_setopt_array($ch, $options);
- ~% Q4 e8 @( T- N5 Z7 x11 7 ]/ f: Q: G0 ?. [" d
12 // 抓取URL并把它传递给浏览器% t3 J) O% U1 E
13 curl_exec($ch);
% j& l. J3 ~9 \14
( U  m9 Q. e- {0 w5 {# \0 e15 // 关闭cURL资源,并且释放系统资源
1 y7 i8 B; l1 D& V" _. V# {16 curl_close($ch);
+ y( c( d8 k# q! s" s17 ?>
" a3 R6 M& B: n9 a& n$ l* f3 ^2 x6 y; l' D+ }6 c8 J
复制代码
0 @) w8 r; p2 n% C5 I: ]4 s$ s( i
2 f( Z! E8 I) Z8 X$ e5 E, E
& t: r% }+ b, {curl是很强大的,例如,我们只想把获取到的内容输入到文件,而不是直接输出给浏览器,我们就可以使用CURLOPT_RETURNTRANSFER选项!' U( Z- q8 b/ V  w
0 _; g# {$ N3 a; x- ^: Y7 P

- B' e, q5 V" P; ~5 S' N0 l! y/ j0 }5 |
这样在curl执行的时候,就会把页面的内容输出到文件当中,我们就可以完成采集等功能啦!
$ _4 C/ T  \, P' a8 K3 d2 I/ q

2 b8 F  \$ r* S8 R% D, S2 {# F& L  N/ `2 B2 C" B4 M! D( K  p
效率方面,curl的原理是模拟浏览器的操作,它的效率要比file_get_contents()高出四倍以上,试想一下,我们1 Y1 G1 t5 S. M( F/ H" n
8 p( s  d" k/ p: O+ f6 i
# b6 f# D/ q: p8 m2 j( I/ m

1 j- h  B# T# V+ t$ ]! f% K要采集一个信息量特别庞大的站,运行效率的差别可想而知!
9 N' J! J/ e1 \& l4 u; A
6 Y. R- v5 j3 G+ B: D
) q: b/ Z8 E& a
$ B. s4 P; ]) m* ]& \9 I不单单是效率上,稳定忄生上来说,curl也远比file_get_contents()函数要好很多!
  s9 ?' O3 S. v. \7 B- w0 n7 A
' ~( f7 }3 _/ }* r( _- x image.png & x+ |6 f! V) L9 J0 h* ^7 A& Q+ K

' v, {0 m; E9 t2 {资源存放>百度网盘( {6 q9 y8 K0 w% ~" o: w. }
! p4 X  x6 ?! j( P* j
下载地址
0 N2 ?, p- u! F4 t5 w: f: m4 v
游客,如果您要查看本帖隐藏内容请回复
: E% J, c0 E7 ?! s
VIP会员全站免金币
) @1 `5 l9 U2 B2 q: M7 P& tIT直通车已为全国各地程序员提供上千G课程资源% ~. H0 H$ f$ A) j
如您需要购买本站VIP会员,请点击「开通VIP」享受全站资源免金币无限制下载!
$ i& B8 F- N; I$ W+ H
# j- v2 D# [: C, l) h) V失效反馈: [  I) T+ W8 K! |
IT直通车所有资源都存放在自己注册的百度网盘,失效可修复,确保持续可用8 s( Q( ^) t6 E, t& T0 R- c& y
如您需要的资源链接提示失效,请尽情反馈给我们,将在收到反馈后尽快修复「点击反馈
9 B1 ^3 v* S$ q
( T% A5 \3 s' {+ G6 S. d获得帮助
/ G2 E7 Z" F- Y需要帮助吗?点击网站右侧在线客服,7X12小时在线!' l" i7 j" U" I# w/ b
2 k: ?# y  ^! p$ E1 L

, E) J6 x! ]+ J1 `# A- J" P- X
回复

使用道具 举报

刘岑岑故 发表于 2021-5-29 16:28:18
感谢分享66666
回复

使用道具 举报

落叶的时节 发表于 2021-5-30 20:27:29
ttttttttttttt
回复

使用道具 举报

红军利物浦2017 发表于 2021-5-30 20:47:31
6666666666666
回复

使用道具 举报

光荣与梦想483 发表于 2021-5-30 22:25:45 来自手机
ttttttttttttt
回复

使用道具 举报

acmain_chm 发表于 2021-5-31 15:29:29
看了几节课程,对我帮助很大
回复

使用道具 举报

立郎 发表于 2021-6-1 12:34:04
教程不错很清晰,来下载新课程学习了
回复

使用道具 举报

万象争辉1 发表于 2021-6-4 08:25:11
6666666666666
回复

使用道具 举报

1156414661 发表于 2021-6-4 09:55:24
祝IT直通车越办越好
回复

使用道具 举报

付佳琦 发表于 2021-6-6 08:11:12
谢谢分享!!
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 AD:IT直通车VIP会员全站免金币下载
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

遇到问题联系客服

在线客服QQ 488090338 

如您充值或开通会员后资源无法下载

本站有售后服务,联系客服修复即可

[联系客服]-[会员充值]

更多课程

关于本站

VIP介绍 加入我们

售后服务

QQ客服 Email邮件

网站声明

IT直通车(www.itztc.com)是一个IT视频教程、软件、书籍资源整合分享平台
站内所有资源均来自于互联网,版权归属原资源作者,如无意侵犯您的版权,请联系我们删除处理。

Archiver|手机版|小黑屋|IT学习网 |网站地图

Powered by Discuz! X3.4  © 2001-2013 IT直通车 ICP证:粤ICP备13026616号 增值电信业务经营许可证:粤B2-20140196

返回顶部 返回列表