php中使用cURL

  [复制链接]

2142

主题

2163

帖子

7362

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7362
admin 发表于 2021-5-29 16:25:32
27626 103
课程目录
: S* S0 Y6 R3 [8 ~+ H; Z# B6 s
& k6 @4 c( A: }9 L5 f3 K! ~# x1、curl是什么: {. J# {) F9 {& F4 C- A

: c" M0 P  R+ L$ g, H& [7 j/ j) \百度百科给的解释是:数据传输神器。那它神器在什么地方那,通过查找资料得出curl可以使用url的语法模拟浏览器来传输数据,因为是模拟浏览器所以它支持多种的网络协议。目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。" `) C& x; ~" z1 @  |4 O
php中使用最多的是通过curl来模拟get和post请求。+ y, Q1 h3 C1 W7 X6 Y4 }- w+ q

7 t: i  F# V5 F, {. @2、如何使用curl
9 ]5 N- O, O/ W$ P& c/ o
# g7 s3 w7 s, n& J(1)、要想使用curl,第一步先要在php中开启curl,在php配置文件php.ini中找到extension=php_curl.dll,把前面的‘;’去掉。重启服务器。在php代码中用phpinfo()打印,发现图中curl说明开启成功。/ h3 S" m# z# c8 T7 a1 J# x) |

+ L' o$ W8 `# }$ ~+ `
, `5 C$ i/ D! [4 @& g(2)、使用curl完成简单的请求主要分为四大步:
4 g, s6 x# q, ]' a1 L1 a( @) K( S' |3 ~. T( o

. ~& `/ c1 d+ T7 i5 J# u/ y- ~3 k6 I1).初始化,创建一个新的curl资源。
7 ^7 H+ y1 [- ^4 g' ]& B1 t
# f' }1 I# y7 _9 q$ j
# B0 X  g' t  \) m* D5 j' q! E, H) j2).设置url和相应的选项
" @  k5 \! z' G: }- \8 |( ~) i/ a( G8 a+ Y
" e/ k$ x7 ?, t4 M
3).抓取url并把他传递给浏览器
% L/ U" I, t! A  u
/ b( R) t2 ]/ a( k  K
" ]: y+ ^+ |, L# e4).关闭curl资源。把资源释放。/ ?5 n& ]2 p+ _6 Q. C

) \" P& a0 s/ y" N4 J: K+ H2 D; f' T4 ]1 z8 ^& y5 i. R
. o  s4 e6 E6 X9 f6 z
复制代码1 c$ }1 C% Z, c" Y$ E$ J
  C  T: P, {, W* ^% x, J) f( |
1         $MyAES = new MyAES();
  P: _! f  V% h& i7 q0 f' I 2         $jiaRes = $MyAES->desEncryptStr($data,"1102130405061708");
  N. N% t3 f+ _: ^) K 3         $header[] = "Content-type: text/xml;charset=UTF-8";) ?' D1 [) S! ?! ~
4         $ch = curl_init();
. L0 z2 M, |% I; J+ \5 X& ? 5         curl_setopt($ch, CURLOPT_URL,REURL);* D0 V& y2 U3 s3 A: _8 a, `
6         curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
' o( |3 P! W" J 7         curl_setopt($ch, CURLOPT_HTTPHEADER,$header);1 b6 f: _" `( ~# S2 Y# u) O
8         curl_setopt($ch, CURLOPT_POST, true);
( Y( R% J" Y4 X8 y7 r+ @$ a1 ~% ~ 9         curl_setopt($ch, CURLOPT_POSTFIELDS, $jiaRes);
' B/ }3 z. z" n6 n  b& p/ ]10         $aa = curl_exec($ch);' W" S4 l- p; d  ^9 d6 L& m
11         // grab URL, and print   
- B( C) a7 L8 u: g12         if(curl_errno($ch)){
: x% C; V3 P) P3 S6 Q13             print curl_error($ch);' y! v2 b& |, M7 O: j
14         }
3 R6 w4 g6 W' h1 Z4 T) S! _' z15         curl_close($ch);   
1 O4 }0 J: p5 ~% m6 p& g
- Q' y9 l$ s, H2 M复制代码
8 i0 l4 O2 H! K! r1 H5 c4 ]. o1 \% D

+ l: m/ d1 h( q5 M7 m贴上项目一段代码,好好的分析一下。4 O" q% `& v/ m. w  Z+ \7 {" ?5 c

5 f2 V9 _4 H3 I& a# a8 j; T. o: k8 u4 z4 ]5 i9 j4 }
curl_init这个是初始化,创建一个新的curl资源。
( W) a/ s) I  B* D2 P( x9 v
6 B3 Z% D! u8 G; Z: Icurl_setopt这个是php的函数。设置一个curl传输选项。
! z; Q# h1 [+ \, k根据php手册对curl_setopt这个函数说明一下,这个函数需要传三个参数,第一个是curl句柄(我的理解就是那个创建的curl资源)。第二个是需要设置的curlopt_XX选项。第三个参数就是选项对应的值。
" Q2 ]$ D/ v2 ^5 K" k; E+ ~) f" O0 _4 n8 B: N9 D3 P
curl_exec函数是执行curl会话。这个函数是初始化一个curl并且全部的选项都设置之后再调用。8 Z+ N8 R& d. c2 d- C- z, A& z- r! |
成功时返回 TRUE, 或者在失败时返回 FALSE。 然而,如果 CURLOPT_RETURNTRANSFER选项被设置,函数执行成功时会返回执行的结果,失败时返回 FALSE 。 & a0 E6 A* }' c' p  X
0 w% ]$ Y5 p/ h" }
CURLOPT_URL 需要获取的url地址         CURLOPT_RETURNTRANSFER 将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。& }4 w: v1 a# [" `+ x  ~0 J

: s0 b  [2 T$ ]9 Z: @3 q% vCURLOPT_HTTPHEADER  一个用来设置HTTP头字段的数组。使用如下的形式的数组进行设置: array('Content-type: text/plain', 'Content-length: 100')
* S/ K! Q2 m- s  \3 g" n5 e, ^1 G: [
CURLOPT_POST 启用时会发送一个常规的POST请求     CURLOPT_POSTFIELDS  全部数据以http协议中post方式发送。, d! K( O% l& m$ h- `6 C' w. Y

0 C' Y/ R$ Z7 X6 O. o" I8 Z8 H
& P+ q! e/ l$ Y: t5 A6 ?  ^ 跟多curlopt对应的设置请查看php文档 http://php.net/manual/zh/book.curl.php, l9 x  q% F5 r) l
+ x% x2 c/ O* |8 `8 g* o5 K. s
特意说明一下curl_setopt_array — 为 cURL 传输会话批量设置选项' \8 c3 V# {! _$ l
使用案例为
: a; D2 e! N! ^: R4 @- L9 c7 ^  U( S! D0 S
0 L5 n, w) Z$ C
复制代码* c( Z* y, J) t- L# C

: g: w; U6 B6 f) p, |; x 1 <?php
5 _9 e: {6 [6 c. E: N 2 // 创建一个新cURL资源) @; V8 h4 b! B/ \
3 $ch = curl_init();
0 j2 @5 d/ W! z2 K# y 4
; R5 y5 \  S0 Q( [' N 5 // 设置URL和相应的选项
2 [' O! z2 X% w9 {$ |5 V/ j 6 $options = array(CURLOPT_URL => 'http://www.example.com/',
# K2 q! H2 Z5 _1 t7 l& u; k. T: Z 7                  CURLOPT_HEADER => false
' @; A$ F: @, U/ F+ G' |0 i" g% p 8                 );4 g' p: H  }( j9 }9 O( ]5 W* A
9
2 D2 \4 M# Y/ d0 e10 curl_setopt_array($ch, $options);
2 N6 R0 ~4 ^6 f- M$ ?11
( g) K5 l7 B/ {12 // 抓取URL并把它传递给浏览器
2 {7 ^2 o: D3 W6 a: I& U2 H7 w7 V13 curl_exec($ch);
/ ^- s5 f0 U' ]! m14 " l- t" N; i+ |0 R. _6 c
15 // 关闭cURL资源,并且释放系统资源
" E4 b# V9 {/ w7 Z9 i- S16 curl_close($ch);
& `5 \$ {0 }! ?) _17 ?>
1 ^% [% P7 W8 D6 [0 R, n) H, a0 \
复制代码& S- j4 W; o9 K3 c/ _( N

# D7 Z  B# m" d6 X- a' X1 w  z4 D1 S- {! \8 j: S
curl是很强大的,例如,我们只想把获取到的内容输入到文件,而不是直接输出给浏览器,我们就可以使用CURLOPT_RETURNTRANSFER选项!% L' x8 N4 J4 {8 y6 a6 q
! v0 v% U/ u! T+ \- T7 r' H9 i

% y7 I7 r9 l* n* ?& e/ G
( S. R- t+ s+ A( U" L这样在curl执行的时候,就会把页面的内容输出到文件当中,我们就可以完成采集等功能啦!
5 E' {) ?% i) J5 u$ h: p  \9 t' {4 U) ]! f. ^# p
+ M0 n% u9 v( [+ z/ F+ e5 z+ V
- I+ ]& R2 ?/ Q3 p
效率方面,curl的原理是模拟浏览器的操作,它的效率要比file_get_contents()高出四倍以上,试想一下,我们3 h9 ?1 q* @8 f7 k5 V2 t& m
$ e& X! H! T: v5 W; y1 F; i
! \. K* O: I! M; I! b+ j/ [6 N- @' k
; |& z2 g" _' @/ u3 P
要采集一个信息量特别庞大的站,运行效率的差别可想而知!* g" g$ q4 l& I1 k* i$ u2 j- z5 V. l
; c% B# \$ I8 W2 o
# O) l8 r; K# P; `

5 l, }. S2 m; e6 Y不单单是效率上,稳定忄生上来说,curl也远比file_get_contents()函数要好很多!
# h" X! z( A; ]4 C* i4 r$ S& q
4 R# F& ^8 T. ~+ j! j+ l! d" s image.png
' ^1 v2 r2 b  |2 ~7 L0 `! T% f0 s. t. C8 N, h& i3 B8 S
资源存放>百度网盘3 F0 W7 }; U" r7 ?$ e. k3 M! \

8 C. U+ Z+ C9 ?% C0 [; N2 j1 b9 {下载地址* g1 h5 i; u+ |& P
游客,如果您要查看本帖隐藏内容请回复
+ t6 d% `  c7 z6 Y0 w5 }
VIP会员全站免金币* a) ]& T* K8 |* D. Q
IT直通车已为全国各地程序员提供上千G课程资源
( n4 _* E+ S3 r- {) L: t如您需要购买本站VIP会员,请点击「开通VIP」享受全站资源免金币无限制下载!
/ ?" E( j9 I$ w% u( f9 W' ^
5 A2 @! y. A* m3 M$ g4 _1 g失效反馈
8 P: D- i3 [# i8 t! F; ^% Q( G( bIT直通车所有资源都存放在自己注册的百度网盘,失效可修复,确保持续可用6 F- G4 g* w/ A$ d& t" U
如您需要的资源链接提示失效,请尽情反馈给我们,将在收到反馈后尽快修复「点击反馈
, U) ?+ O8 \( W8 p, x/ X' T% j8 f6 N: V* o" Q
获得帮助$ r' ?  c  e$ T
需要帮助吗?点击网站右侧在线客服,7X12小时在线!
, Q7 H6 p/ P4 I/ D1 X
% t! H8 E& B$ k( [, T5 t& k0 K  Q& R" }: u
回复

使用道具 举报

刘岑岑故 发表于 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吞消息严重,网站启用邮件对接VIP会员服务,有事请发邮件到 wangkefuwu@outlook.com

关于本站

VIP介绍 加入我们

售后服务

QQ客服 Email邮件

网站声明

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

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

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

返回顶部 返回列表