首页 > 语言 > PHP > 正文

PHP curl函数的使用示例 模拟curl请求

2024-09-04 11:49:15
字体:大 中 小
来源:转载
供稿:网友

PHP curl函数是可以模仿用户进行访问页面了,下面来给各位介绍一下工作中常用的到的PHP curl函数示例.

PHP有着很好的curl机制,但是用起来总是不那么的令人满意,因为它需要好几步的操作和,好多难记的参数,这里我将php的curl封装了一下,使它不那么的复杂,代码如下:

  1. <?php 
  2. /** 
  3.  * php模拟curl请求 
  4.  * 
  5.  * @param string $url     请求的url 
  6.  * @param string $method  请求的方法, 默认POST 
  7.  * @param array  $data    请求传递的数据 
  8.  * @param array  $header  请求设置的头信息 
  9.  * @param int    $head    是否打印头信息 
  10.  * @param int    $body    是否打印body信息 
  11.  * @param int    $timeout 设置超时时间 
  12.  * 
  13.  * @return array 
  14.  */ 
  15. function curl($url,$method="POST",$data=array(),$header=array(),$head=0,$body=0,$timeout = 30) 
  16. { 
  17.     $ch = curl_init(); 
  18.     curl_setopt($ch, CURLOPT_URL, $url); 
  19.     if (strpos($url, "https") !== false ) { 
  20.         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
  21.         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
  22.         if (isset($_SERVER['HTTP_USER_AGENT'])) { 
  23.             curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 
  24.         } 
  25.     } 
  26.     if (!emptyempty($header)) { 
  27.         curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
  28.     } 
  29.     switch ($method) { 
  30.     case 'POST': 
  31.         curl_setopt($ch, CURLOPT_POST, 1); 
  32.         curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
  33.         break;  //开源软件:Vevb.com 
  34.     case 'GET': 
  35.         break; 
  36.     case 'PUT': 
  37.         curl_setopt($ch, CURLOPT_PUT, 1); 
  38.         curl_setopt($ch, CURLOPT_INFILE, ''); 
  39.         curl_setopt($ch, CURLOPT_INFILESIZE, 10); 
  40.         break; 
  41.     case 'DELETE': 
  42.         curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE"); 
  43.         break; 
  44.     default: 
  45.         break; 
  46.     } 
  47.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  48.     curl_setopt($ch, CURLOPT_HEADER, $head); 
  49.     curl_setopt($ch, CURLOPT_NOBODY, $body); 
  50.     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
  51.     $rtn = curl_exec($ch); //获得返回 
  52.     if (curl_errno($ch)) { 
  53.         echo 'Errno'.curl_error($ch);//捕抓异常 
  54.     } 
  55.     curl_close($ch); 
  56.     return $rtn; 
  57. } 
  58. ?>

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表