类似于dreamhost这类主机服务商,是显示fopen的使用 的。使用php的curl可以实现支持FTP、FTPS、HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE和LDAP。curl 支持SSL证书、HTTP POST、HTTP PUT 、FTP 上传,kerberos、基于HTT格式的上传、代理、cookie、用户+口令证明、文件传送恢复、http代理通道就最常用的来说,是基于http的 get和post方法。

代码实现:

1、http的get实现

  1. $ch = curl_init("http://www.domain.com/api/index.php?test=1") ;
  2. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回
  3. curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; // 在启用 CURLOPT_RETURNTRANSFER 时候将获取数据返回
  4. echo $output = curl_exec($ch) ;
  5.  
  6. /* 写入文件 */
  7. $fh = fopen("out.html", 'w') ;
  8. fwrite($fh, $output) ;
  9. fclose($fh) ;

2、http的post实现

  1. <?php
  2. $url = 'http://www.domain.com/api/' ;
  3. $fields = array(
  4. 'lname'=>'justcoding' ,
  5. 'fname'=>'phplover' ,
  6. 'title'=>'myapi',
  7. 'age'=>'27' ,
  8. 'email'=>'1353777303@gmail.com' ,
  9. 'phone'=>'1353777303'
  10. );
  11. //$post_data = implode('&',$fields);
  12.  
  13. //open connection
  14. $ch = curl_init() ;
  15. //set the url, number of POST vars, POST data
  16. curl_setopt($ch, CURLOPT_URL,$url) ;
  17. curl_setopt($ch, CURLOPT_POST,count($fields)) ; // 启用时会发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。
  18. curl_setopt($ch, CURLOPT_POSTFIELDS,$fields); // 在HTTP中的“POST”操作。如果要传送一个文件,需要一个@开头的文件名
  19.  
  20. ob_start();
  21. curl_exec($ch);
  22. $result = ob_get_contents() ;
  23. ob_end_clean();
  24.  
  25. echo $result;
  26.  
  27. //close connection
  28. curl_close($ch) ;

3. php的curl传送cookie

两种方式:

一种是自动:

  curl_setopt($curlHandle, CURLOPT_COOKIEJAR, 'cookie.txt '); //保存

  curl_setopt($curlHandle, CURLOPT_COOKIEFILE, 'cookie.txt '); //读取

  这样COOKIE会自动跟上去. 
  不过要分两次,一是先访问产生cookie,接着连结才能用cookie

  1. <?php
  2.  
  3. function get_curlcuconent2($filename,$referer)
  4. {
  5. $cookie_jar = tempnam('./tmp','JSESSIONID');
  6.  
  7. $ch = curl_init();
  8. curl_setopt($ch, CURLOPT_URL, $filename);
  9. curl_setopt($ch, CURLOPT_HEADER, false);
  10. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  11.  
  12. //设置文件读取并提交的cookie路径
  13. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
  14. $filecontent=curl_exec($ch);
  15. curl_close($ch);
  16.  
  17. $ch = curl_init();
  18. $hostname ="www.domain.com";
  19. //$referer="http://www.domain.com/";
  20. curl_setopt($ch, CURLOPT_URL, $filename);
  21. curl_setopt($ch, CURLOPT_REFERER, $referer); // 看这里,你也可以说你从google来
  22. curl_setopt($ch, CURLOPT_USERAGENT, "www.domain.com");
  23.  
  24. //$request = "JSESSIONID=abc6szw15ozvZ_PU9b-8r"; //设置POST参数
  25. //curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
  26. // 上面这句,当然你可以说你是baidu,改掉这里的值就ok了,可以实现小偷的功能,$_SERVER['HTTP_USER_AGENT']
  27. //你也可以自己做个 spider 了,那么就伪装这里的 CURLOPT_USERAGENT 吧
  28. //如果你要把这个程序放到linux上用php -q执行那也要写出具体的$_SERVER['HTTP_USER_AGENT'],伪造的也可以
  29. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  30. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_jar);
  31. curl_setopt($ch, CURLOPT_HEADER, false);//设定是否输出页面内容
  32. curl_setopt($ch, CURLOPT_GET, 1); // post,get 过去
  33.  
  34. $filecontent = curl_exec($ch);
  35. preg_match_all("/charset=(.+?)[NULL\"\']/is",$filecontent, $charsetarray);
  36. if(strtolower($charsetarray[1][0])=="utf-8")
  37. $filecontent=iconv( 'utf-8', 'gb18030//IGNORE' , $filecontent);
  38. curl_close($ch);
  39. return $filecontent;
  40. }
  41. ?>

另一种自定义:

  1. $header[]= 'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, text/html, * '. '/* ';
  2. $header[]= 'Accept-Language: zh-cn ';
  3. $header[]= 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) ';
  4. $header[]= 'Host: '.$你的目标HOST;
  5. $header[]= 'Connection: Keep-Alive ';
  6. $header[]= 'Cookie: '.$你的COOKIE串;
  7.  
  8. curl_setopt($curlHandel,CURLOPT_HTTPHEADER,$header);

原链接http://justcoding.iteye.com/blog/842371

PHP的curl实现get,post 和 cookie(实例)的更多相关文章

  1. php使用CURL不依赖COOKIEJAR获取COOKIE的方法

    本文实例讲述了php使用CURL不依赖COOKIEJAR获取COOKIE的方法.分享给大家供大家参考.具体分析如下: PHP中CURL类是一个非常牛逼的工具类,具体怎么牛逼就不啰嗦了. 对于COOKI ...

  2. 浅谈 php 采用curl 函数库获取网页 cookie 和 带着cookie去访问 网页的方法!!!!

    由于近段时间帮朋友开发一个能够查询正方教务系统的微信公众平台号.有所收获.这里总结下个人经验. 开讲前,先吐槽一下新浪云服务器,一个程序里的   同一个函数  在PC测试可以正常运行,在它那里就会挂的 ...

  3. PHP curl爬取数据 加入cookie值

    public function get_cookie(){ header("Content-type:text/html;Charset=utf8"); $ch =curl_ini ...

  4. linux curl 命令详解,以及实例

    linux curl是一个利用URL规则在命令行下工作的文件传输工具.它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称url为下载工具. 一,curl命令参数,有好多我没有用过,也不知道翻 ...

  5. PHP中使用CURL模拟登录并获取数据实例

    cURL 是一个功能强大的PHP库,使用PHP的cURL库可以简单和有效地抓取网页并采集内容,设置cookie完成模拟登录网页,curl提供了丰富的函数,开发者可以从PHP手册中获取更多关于cURL信 ...

  6. jQuery切换网页皮肤保存到Cookie实例

    效果体验:http://keleyi.com/keleyi/phtml/jqtexiao/25.htm 以下是源代码: <!DOCTYPE html PUBLIC "-//W3C//D ...

  7. JS获取跨域的cookie实例

    如果说JS能实现跨域cookie,你可能觉得不太可能实现,不过事实上,这个还是可以搞定的,不过需要一定的条件才行的哦!具体方案如下: 一共需要3个文件,第一个文件为需要获取cookie的页面,在这个页 ...

  8. Cookie实例,理解cookie

    一.一句话了解cookie是什么 cookie是服务端发送给客户端的.用来记录一些信息(如用户名),定制主页,聚焦广告的.最终以文件形式存在于客户端电脑磁盘下的小型文档. 二.用实例来认清cookie ...

  9. Js读写cookie实例

    统计访问次数 <html> <head> <meta http-equiv="Content-Type" content="text/htm ...

  10. 求高手帮忙解决一下问题Java Web Cookie实例

    package cn.com; import java.io.IOException; import java.io.PrintWriter; import java.util.LinkedHashM ...

随机推荐

  1. Qt之json解析

    Jsoner::Jsoner(QObject *parent) : QObject(parent){    QJsonObject json;    json.insert("loginna ...

  2. source insight添加汇编文件.s

    (1) 做ARM嵌入式开发时,有时得整汇编代码,但在SIS里建立PROJECT并ADD TREE的时候,根据默认设置并不会把该TREE里面所有汇编文件都包含进来,默认只加了.inc和.asm后缀的, ...

  3. cocos2d-x学习知识点记录

    环境搭建 http://4137613.blog.51cto.com/4127613/751149 Cocos2d-x初探,HelloWorld解读 http://www.cnblogs.com/Ke ...

  4. JS简单仿QQ聊天工具的制作

    刚接触JS,对其充满了好奇,利用刚学到的一点知识,写了一个简单的仿QQ聊天的东西,其中还有很多的不足之处,有待慢慢提高. 功能:1.在输入框中输入内容,点击发送,即可在上方显示所输入内容. 2.点击‘ ...

  5. skiplist 跳表(2)-----细心学习

    快速了解skiplist请看:skiplist 跳表(1) http://blog.sina.com.cn/s/blog_693f08470101n2lv.html 本周我要介绍的数据结构,是我非常非 ...

  6. The Unified Modeling Language(UML)

    统一过程建模语言UML 统一过程建模语言UML是一种标准的可视化建模语言,使用在:  业务建模和类似的过程 居于软件系统的分析.设计.和实现 UML 是一门通用语言,提供给业务分析员,软件架构师和开发 ...

  7. USB 2.0 A型、B型、Mini和Micro接口定义及封装

    USB全称Universal Serial Bus(通用串行总线),目前USB 2.0接口分为四种类型A型.B型.Mini型还有后来补充的Micro型接口,每种接口都分插头和插座两个部分,Micro还 ...

  8. 裸眼3D立体显示技术原理详解

    众所周知,现实世界是一个三维空间,除去时间这一维度,现实世界是由长度.宽度和高度三个维度组成,我们每天就生活在这个三维世界中,而现有的显示设备大多数都只能显示二维信息,并不能带给人真实的三维感觉.为了 ...

  9. Altium Designer10 如何导出Gerber文件

    版本:AD10.818 目的:Gerber文件导出备忘 http://blog.sina.com.cn/s/blog_9b9a51990100zyyv.html 目录: Step1:设置原点 Step ...

  10. Java+JQuery实现网页显示本地文件目录(含源码)

    原文地址:http://www.cnblogs.com/liaoyu/p/uudisk.html 源码地址:https://github.com/liaoyu/uudisk 前段时间为是练习JQuer ...