网站地图    收藏   

主页 > php专栏 > php应用 >

php中Curl函数常用的两个例子,登陆/soap - php高级应

来源:自学PHP网    时间:2014-11-27 22:16 作者: 阅读:

[导读] curl在php中在性能方法要比较其它相同功能函数要高得多,下面我给大家介绍我自己常用的函数一个使用PHP curl 来做登陆后的抓取时使用,一个使用PHP curl来实现soap;我想你会感兴趣.例子...

php中Curl函数常用的两个例子,登陆/soap

curl在php中在性能方法要比较其它相同功能函数要高得多,下面我给大家介绍我自己常用的函数一个使用PHP curl 来做登陆后的抓取时使用,一个使用PHP curl来实现soap;我想你会感兴趣.

例子,模拟登陆,代码如下:

  1. /** 
  2. * 模拟登陆 
  3. * $url 请求地址 
  4. * $post 需要POST的数据 
  5. * $cookie 登陆时取的的COOKIE 
  6. * $cookiejar cookie要存到的位置 例如/tmp/test.cookie 
  7. * $referer 上页地址 
  8. * 
  9. **/ 
  10. function vcurl($url$post = ''$cookie = ''$cookiejar = ''$referer = ''){ 
  11. $tmpInfo = ''
  12. //用来存放cookie的文件 
  13. //初始化curl 
  14. $curl = curl_init(); 
  15. //设定目标网址 
  16. curl_setopt($curl, CURLOPT_URL, $url); 
  17. //使用目前所用的浏览器代理 
  18. curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 
  19. //curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"); 
  20. //如果有Ref参数,则设置Referer头,否则自动设置Referer头 
  21. if($referer) { 
  22. curl_setopt($curl, CURLOPT_REFERER, $referer); 
  23. else { 
  24. curl_setopt($curl, CURLOPT_AUTOREFERER, 1); 
  25. //如果有post数据参数,则方法为POST,并且设置数据,否则为GET 
  26. if($post) { 
  27. //发送一个常规的POST请求,默认类型为:application/x-www-form-urlencoded,www.phpfensi.com表单提交 
  28. curl_setopt($curl, CURLOPT_POST, 1); 
  29. curl_setopt($curl, CURLOPT_POSTFIELDS, $post); 
  30. //如果有cookie参数,则设置 
  31. if($cookie) { 
  32. curl_setopt($curl, CURLOPT_COOKIE, $cookie); 
  33. //如果有cookie文件参数,则设置存取Cookie文件名 
  34. if($cookiejar) { 
  35. curl_setopt($curl, CURLOPT_COOKIEJAR, $cookiejar); 
  36. curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiejar); 
  37. //如果是302转移,则返回转移后的网址及内容 
  38. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); 
  39. //设置执行的最大秒数 
  40. curl_setopt($curl, CURLOPT_TIMEOUT, 100); 
  41. //返回内容中是否包含头信息 
  42. curl_setopt($curl, CURLOPT_HEADER, 0); 
  43. //把返回的结果存在文件或者变量中,而不是直接显示在浏览器 
  44. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
  45. //执行函数后的返回结果 
  46. $tmpInfo = curl_exec($curl); 
  47. //如果出错,显示错误信息 
  48. if (curl_errno($curl)) { 
  49. $tmpInfo = '<pre><b>错误:</b><br />'.curl_error($curl); 
  50. }//开源代码phpfensi.com 
  51. //关闭curl对象 
  52. curl_close($curl); 
  53. //返回结果 
  54. return $tmpInfo

例子,soap代码如下:

  1. function vcurlsoap($url$SoapRequest$SoapAction) { 
  2. $ch = curl_init (); //initiate the curl session 
  3. curl_setopt ( $ch, CURLOPT_URL, $url ); //set to url to post to 
  4. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); // return data in a variable 
  5. curl_setopt ( $ch, CURLOPT_HEADER, 0 ); 
  6. curl_setopt ( $ch, CURLOPT_POST, 1 ); 
  7. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $SoapRequest ); // post the xml 
  8. curl_setopt ( $ch, CURLOPT_TIMEOUT, 60 ); // set timeout in seconds 
  9. curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, 0 ); 
  10. $header = array ("Content-Type: text/xml" ); 
  11. $header [] = "Content-Length: ".strlen($SoapRequest); 
  12. if (! is_null ( $SoapAction )) 
  13. $header [] = 'SOAPAction: "' . $SoapAction . '"'
  14. curl_setopt ( $ch, CURLOPT_HTTPHEADER, $header ); 
  15. $xmlResponse = curl_exec ( $ch ); 
  16. curl_close ( $ch ); 
  17. return $xmlResponse

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论