php中使用cURL

  [复制链接]

2118

主题

2134

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
37896
admin 发表于 2021-5-29 16:25:32
26777 103
课程目录
5 I8 D2 z0 ~, M$ t! U2 m- c9 M
6 P1 v( x- @7 Q% F1、curl是什么( W% {2 l+ I3 z3 j9 ~0 \5 g
, K- E: K, s  Q' s% X: C5 P1 n( B* N
百度百科给的解释是:数据传输神器。那它神器在什么地方那,通过查找资料得出curl可以使用url的语法模拟浏览器来传输数据,因为是模拟浏览器所以它支持多种的网络协议。目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。
% L% T: O  M; S. K/ \) @4 i- A. q  Iphp中使用最多的是通过curl来模拟get和post请求。
4 r8 _* w. y- ~8 U1 P
& G9 J9 N2 q8 \1 K/ E2、如何使用curl/ f: k+ u! P3 ?4 R

; K$ K, l0 `5 S. Z8 \/ P% F(1)、要想使用curl,第一步先要在php中开启curl,在php配置文件php.ini中找到extension=php_curl.dll,把前面的‘;’去掉。重启服务器。在php代码中用phpinfo()打印,发现图中curl说明开启成功。
, w2 C, G$ P7 @3 p* d$ j! n1 E9 m2 _* p7 H) K

/ @' l% J* s4 P- E5 r0 K) ]: r6 M(2)、使用curl完成简单的请求主要分为四大步:
/ p% B4 N9 s, T; W1 d
* y- m* |0 X+ ^1 J
& z/ i# h5 P- x$ h8 _0 e2 m1).初始化,创建一个新的curl资源。9 f' a* r' x$ E( }3 S/ P1 H0 N1 S; I

' e% x$ f; S  `$ n# H0 Q& M( H# j
8 j( Z+ p# P* q( ~. m2).设置url和相应的选项
& k" r8 V3 d& B/ h3 E4 [1 [
: y' x; c' H; J5 |) d7 p# {* V8 p$ \+ \
3).抓取url并把他传递给浏览器) i0 n) _+ [) F$ n
( X0 I2 s" V4 l  Q/ L: c7 @
( }" X' P0 N+ k7 X3 a, T" u
4).关闭curl资源。把资源释放。9 ]  E7 h3 j2 I( {2 j$ O: a$ r

, A( ?& O0 L0 Y7 k$ E+ R
/ g( o3 q) {1 F5 ~# r& |* g9 D  u$ s
复制代码
; H* z( K% \+ u+ z7 Q+ P3 O2 N/ ]' E1 C6 m
1         $MyAES = new MyAES();6 L2 o1 Z" }# V$ s9 ^* x2 p# w
2         $jiaRes = $MyAES->desEncryptStr($data,"1102130405061708");
- U3 E" Y; K/ E' t" f  m1 j- q 3         $header[] = "Content-type: text/xml;charset=UTF-8";  n& O5 B- ^0 X) E: R  L; a
4         $ch = curl_init();
: R! N2 P: }" L( |& {7 C 5         curl_setopt($ch, CURLOPT_URL,REURL);8 x- x2 _0 d6 l5 K
6         curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
! W  L3 ]$ G3 d' O 7         curl_setopt($ch, CURLOPT_HTTPHEADER,$header);8 {; u. [  q0 t9 G4 z# ~( G
8         curl_setopt($ch, CURLOPT_POST, true);  M9 P7 Q0 ?0 b1 z& c
9         curl_setopt($ch, CURLOPT_POSTFIELDS, $jiaRes);
/ A7 E1 a6 N2 u/ e! K7 F) ?10         $aa = curl_exec($ch);
# U, u! H6 K' W* e5 A+ y11         // grab URL, and print    : a; h; X; w6 m& w1 P% Q8 X
12         if(curl_errno($ch)){9 ^  q; e1 V& D, O  I% R
13             print curl_error($ch);
5 D0 L  ^+ Y0 @) S2 o2 w14         }
% \( G' v. Z' c8 H& u, q15         curl_close($ch);   
4 `- \+ ~* D) i# h% D4 H. @+ ~. o( O9 K% I- X  v
复制代码- Q% ?9 y" H# k9 Y
" W! J9 H0 \$ Q- o1 l# x: I
; u1 c9 y0 j% ]9 D
贴上项目一段代码,好好的分析一下。
4 G+ c* w2 A) X. h/ q3 O7 N- F
! R$ {' ]1 m' r! Q  M2 S
8 K7 Z& n4 S$ P5 y( Rcurl_init这个是初始化,创建一个新的curl资源。
# ?* c/ Z* \- I7 a. T- e3 |  e* k/ A0 S! w/ t- p; {
curl_setopt这个是php的函数。设置一个curl传输选项。
2 B7 Y" d/ O: }% J根据php手册对curl_setopt这个函数说明一下,这个函数需要传三个参数,第一个是curl句柄(我的理解就是那个创建的curl资源)。第二个是需要设置的curlopt_XX选项。第三个参数就是选项对应的值。
4 H" o0 ^8 c% ^9 d+ y- w" g. K9 |4 B8 M4 C6 e4 i7 p: l
curl_exec函数是执行curl会话。这个函数是初始化一个curl并且全部的选项都设置之后再调用。2 q$ j, W# \8 e$ u8 m! Y+ x4 X" Q! I
成功时返回 TRUE, 或者在失败时返回 FALSE。 然而,如果 CURLOPT_RETURNTRANSFER选项被设置,函数执行成功时会返回执行的结果,失败时返回 FALSE 。
. l6 P( E$ p5 A" M4 M$ m5 O
5 i& p: @( a) M, T1 D  s& bCURLOPT_URL 需要获取的url地址         CURLOPT_RETURNTRANSFER 将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
- B! |7 U( W1 H1 n$ Z1 u$ l& C# a/ |
CURLOPT_HTTPHEADER  一个用来设置HTTP头字段的数组。使用如下的形式的数组进行设置: array('Content-type: text/plain', 'Content-length: 100') 0 Y+ d7 u* s& [- }. {/ |. F

( V5 x2 {  p' A3 ?CURLOPT_POST 启用时会发送一个常规的POST请求     CURLOPT_POSTFIELDS  全部数据以http协议中post方式发送。3 t. M" c2 P1 ^4 j2 l% c+ O
9 W4 B' X& F1 f$ g: Z$ P9 m
& X2 s  G$ K* i
跟多curlopt对应的设置请查看php文档 http://php.net/manual/zh/book.curl.php" W1 L9 e; r! e  k; |

( Z1 Q2 B9 `. e# ]) F特意说明一下curl_setopt_array — 为 cURL 传输会话批量设置选项
/ M7 `, g) _. B# [: Z0 C使用案例为4 F8 r4 n+ Z9 i8 h$ P- l
! B. K* b6 d" W

% ]6 h+ m7 O7 R$ {2 V5 T) \! H复制代码
& U" }5 W$ G! z: w' G; h' ?' P4 H& ~! m4 Q( V. k+ C
1 <?php
* j5 \% t- P/ L2 i" ?6 y. j. ^ 2 // 创建一个新cURL资源
- G! K4 o5 j3 X. {/ L 3 $ch = curl_init();
+ |$ i; B# R: p8 ]' N 4
) p0 v8 c2 `$ P! v 5 // 设置URL和相应的选项; ^5 i$ K& Y9 x; D+ @, e
6 $options = array(CURLOPT_URL => 'http://www.example.com/',
, T* r  F! r! D7 C, H% G 7                  CURLOPT_HEADER => false% ~# J" f! I; ^" n
8                 );1 _. H$ P0 @. W( ]
9
+ h3 [9 x1 i9 {( S) ~, {10 curl_setopt_array($ch, $options);
" e/ A( _2 D8 l$ N' K$ c11 8 W# G! J9 O7 o& U4 H
12 // 抓取URL并把它传递给浏览器+ E9 b- X5 @) W: T' w0 L
13 curl_exec($ch);
) J  }  U6 `# O) ^14
* t6 D5 g' M2 a- v* D& P7 t' S15 // 关闭cURL资源,并且释放系统资源
6 q  K% {) q. H  o16 curl_close($ch);4 Y4 U# g; U7 f9 X* s( L
17 ?>5 u( z( Z8 X6 T$ w4 F
- Z" r. b9 e; [& H$ B- R( @# U
复制代码1 d7 ?- }/ O$ v, f, y
2 U. d9 h4 W9 f1 o
8 J& _* D9 L& W1 k' b: z
curl是很强大的,例如,我们只想把获取到的内容输入到文件,而不是直接输出给浏览器,我们就可以使用CURLOPT_RETURNTRANSFER选项!3 S$ s7 B9 V& L/ I

; I- |' D8 R* L9 ~) X' L. A( e
6 F- k4 N6 [. f% L7 K  l' }: L0 `9 s! H' }" @6 p
这样在curl执行的时候,就会把页面的内容输出到文件当中,我们就可以完成采集等功能啦!3 A5 I. }5 M9 X4 K7 g) ?

2 u8 T# o8 `% L8 Y& x9 @0 F/ [) @, @
$ ^; Z) D0 I& T6 q" _+ E  B& D; T. V# K4 h7 V5 y' M: P
效率方面,curl的原理是模拟浏览器的操作,它的效率要比file_get_contents()高出四倍以上,试想一下,我们% b1 m9 g3 v5 _8 k/ Q- }6 p
: {; A" A6 u; k

3 ]8 A* d% v# H9 D6 M, d6 R4 |0 {" b# S
要采集一个信息量特别庞大的站,运行效率的差别可想而知!
3 {. u& B; d7 n$ \% X9 D+ u- Q/ M( u5 X* K+ F- i+ [; O8 ^0 C
5 U  K) Q2 C# C6 l
7 ]# U; T, Q/ {; T5 C; l$ g
不单单是效率上,稳定忄生上来说,curl也远比file_get_contents()函数要好很多!+ A9 S9 y8 \6 u* P) t6 Y! O/ R

0 ?  {$ X: h- ?6 [, M image.png
6 t% P% R+ V* U5 F
$ N% H% Z3 Z) j( `. O. T资源存放>百度网盘6 w2 |# w5 `: s- W- S

5 ?$ a, s! i! K, O  S. r下载地址
& o4 K) R3 O* ~3 G; N+ j8 ^1 T6 {( c
游客,如果您要查看本帖隐藏内容请回复

5 k0 b- B$ ^, J' L& uVIP会员全站免金币
$ |% f# f9 A, Z6 s( O1 t. ZIT直通车已为全国各地程序员提供上千G课程资源  [& z5 ]( h" Z5 V) {; N
如您需要购买本站VIP会员,请点击「开通VIP」享受全站资源免金币无限制下载!; z3 C+ b1 h* c+ v4 s

% I+ ]0 p* p9 p: H0 l5 L+ V失效反馈
# \* N( e0 m2 k8 D; K3 \" kIT直通车所有资源都存放在自己注册的百度网盘,失效可修复,确保持续可用6 x$ F$ w5 O. M% `! p  e, H# c" m
如您需要的资源链接提示失效,请尽情反馈给我们,将在收到反馈后尽快修复「点击反馈7 M7 l8 ?0 z* e& @6 t
6 i% v/ a* k# g' s) o' B
获得帮助' [7 j+ g5 `0 w. g0 v$ L6 ?
需要帮助吗?点击网站右侧在线客服,7X12小时在线!
' q6 V3 I& W$ ~8 f/ ~  i; G, V# t6 h1 P( D

" s6 a; x$ H! r2 l5 Q
回复

使用道具 举报

刘岑岑故 发表于 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

返回顶部 返回列表