PHP的curl实现get,post 和 cookie(几个实例)

类似于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实现

 

Php代码
  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实现

 

Php代码  
  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) ;  

   

Php代码  
  1. <?php  
  2.   
  3. if($_GET['test'])  
  4. {  
  5.      print_r($_GET);  
  6. }  
  7.   
  8. if($_POST)  
  9. {  
  10.     print_r($_POST);  
  11. }   

 

3. php的curl传送cookie

 

两种方式:

 

一种是自动:

 

Php代码  
  1. curl_setopt($curlHandle, CURLOPT_COOKIEJAR, 'cookie.txt '); //保存  
  2. curl_setopt($curlHandle, CURLOPT_COOKIEFILE, 'cookie.txt '); //读取  
 

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

 

例子:

 

Php代码  
  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.   
  42. ?>  
 


一种自定义:

 

Php代码  
    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);   

转载于:https://www.cnblogs.com/Jerry-blog/p/5010158.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt treeWidget 查找指定字段内容的条目并跳转到该条目

遍历Qt treeWidget&#xff0c;查找指定字段内容的条目&#xff0c;并跳转到该条目。 void MainWindow::on_pushButton_sidFind_clicked() {QString sid ui->lineEdit_sidFind->text();QTreeWidgetItemIterator it(ui->treeWidget_sqItem);while (*it) {if ((*it)-&…

[react] 什么是浅层渲染?

[react] 什么是浅层渲染&#xff1f; 当为 React 写单元测试时&#xff0c;浅层渲染(Shallow Renderer) 会变得十分有用。浅层渲染使你可以渲染 “单层深度” 的组件&#xff0c;并且对组件的 render 方法的返回值进行断言&#xff0c;不用担心子组件的行为&#xff0c;组件并…

document.all和document.layers

document.all是IE 4.0及以上版本的专有属性&#xff0c;是一个表示当前文档的所有对象的娄组&#xff0c;不仅包括页面上可见的实体对象&#xff0c;还包括一些不可见的对象&#xff0c;比如html注释等等。在document.all数组里面&#xff0c;元素不分层次&#xff0c;是按照其…

strip and linux lib compile

From: http://www.360doc.com/content/11/0808/17/7472348_138951246.shtml strip经常用来去除目标文件中的一些符号表、调试符号表信息&#xff0c;以减小程序的大小&#xff0c;在rpmbuild包的最后就用到。 其支持的选项如下&#xff1a; >strip -h 用法&#xff1a;str…

SpringMVC之控制器的单例和多例管理

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 在使用Spring3对控制器Controller进行bean管理时&#xff0c;如果要对控制器是否单例进行管理。 有两种方式配置多例模式&#xff1a; 1.springXML 2.注解本身的控制器类 [java] view plaincopyprin…

Python多个版本指定如何指定

1、指定python3 32bit 版本安装SciPy库 py -3-32 -m pip install SciPy 2、指定python2 64bit 版本安装SciPy库 py -2-64 -m pip install SciPy 3、进入指定版本根目录执行操作 D:\Tools\python37_32bit>python.exe -m pip list

[react] react16的reconciliation和commit分别是什么?

[react] react16的reconciliation和commit分别是什么&#xff1f; React 16 三个核心&#xff1a; Scheduler 调度器&#xff1a;决定什么时候调度 ReconcilerReconciler 协调器&#xff1a;进行 Fiber diff 及新的 Fiber 树的生成以及副作用记录Commit 将新的树应用到 DOM 中…

BZOJ 1997: [Hnoi2010]Planar( 2sat )

平面图中E ≤ V*2-6..一个圈上2个点的边可以是在外或者内, 经典的2sat问题..------------------------------------------------------------------------------------------#include<cstdio>#include<cstring>#include<algorithm>#include<stack>usin…

Qt6.2.1在线安装教程

1、Qt下载官网 Download Qt | Develop Desktop & Embedded Systems | Qt 2、下载后在线安装 安装时会要求登陆账号&#xff0c;这个可以去官网注册账号。 相关模块和版本按需选择。以下为我的项目开发需要安装的部分模块&#xff1a; 然后漫长等待安装结束即可。

Vxworks增加system call

Vxworks中增加system call的伪代码.比如用户层可以获取kernel中的time tick.#include <syscall.h>#include<syscallLib.h>unsignedshortgettimdsp(void);SYSCALL_RTN_TBL_ENTRYmsGetTbl[] {{(FUNCPTR) gettimdsp, 1,"gettimdsp", 0}};unsignedshortgetti…

[react] 使用react写一个todo应用,说说你的思路

[react] 使用react写一个todo应用&#xff0c;说说你的思路 拆分组件&#xff1a;应用 表单部分&#xff08;input button&#xff09;、列表部分&#xff08;checkbox ul>li delete button&#xff09;数据设计&#xff1a;表单的待输入字段 列表中的List数据&#x…

第一次写博客

学习关于前端的知识也有些时间了&#xff0c;从一点不懂到现在的了解到很多关于前端各方面的知识&#xff0c;也算是收获了许多吧&#xff0c;学习了HTML,CSS,JavaScript,PHP,ajax,jQuery,等等许多东西&#xff0c;还有一些框架结构和关于函数的封装&#xff0c;可是关于所学的…

shell除去重复的行——uniq命令

From: http://blog.163.com/redhumor126/blog/static/1955478420123119218332/ 进行排序之后&#xff0c;您会发现有些行是重复的。有时候该重复信息是不需要的&#xff0c;可以将它除去以节省磁盘空间。不必对文本行进行排序&#xff0c;但是您应当记住 uniq 在读取行时会对…

Qt6.2.1使用clang格式化代码

1、环境说明 Qt6.2.1 64bit, windows环境, 安装链接&#xff1a;Download Qt | Develop Desktop & Embedded Systems | Qt llvm 10.0.0 64bit windows环境&#xff0c;安装链接&#xff1a; LLVM Download Page 2、启用Beautifer 帮助--关于插件&#xff0c;勾选Beautif…

为何加入了AddType就无法启动Apache

AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType application/x-httpd-php.php 如上面第3句加入了就无法启动apache。这是为什么&#xff1f; 其实我一直都没有错误。后来在网络上找了下&#xff0c;原来addtype这种值只有通过拷贝&#xff0c…

[react] 请说说你对react的render方法的理解

[react] 请说说你对react的render方法的理解 render是class组件中必须被重载的方法&#xff0c;组件执行render方法的条件如下&#xff1a; 初始渲染this.setState方法&#xff0c;参数不能为null,及时this.setState({}),或者setState一个相同的值&#xff0c;也会导致render…

Getting Started With Hazelcast 读书笔记(第七章)

第七章 部署策略 Hazelcast具有适应性,能根据不同的架构和应用进行特定的部署配置,每个应用可以根据具体情况选择最优的配置: 数据与应用紧密结合的模式(重点,of就是这种) 胖客户端模式(最好用一种) 轻成员节点模式(折衷上面两种) 1.使用紧密结合的模式&#xff0c;每个JVM实例…

shell 删除文本中的重复行(sort+uniq/awk/sed) (方法=效率啊)

From: http://churuimin425.blog.163.com/blog/static/341298772012230112956712/ 删除文本中的重复行(sortuniq/awk/sed)三种常见方法:第一&#xff0c;用sortuniq&#xff0c;注意&#xff0c;单纯uniq是不行的。shell> sort -k2n file | uniq > a.out 这里我做了个…

Qt 调用Python引擎混合编程

0、前言 使用Qt和Python做混合编程&#xff0c;充分发挥Qt GUI的图形化框架优势和Python数据处理的计算能力。复杂的计算可用到Python众多三方库&#xff0c;将Python需要执行的功能写成py文件&#xff0c;做成插件的形式&#xff0c;被Qt c调用&#xff0c;修改py文件即可实现…

高扫后督解决方案 力助银行内部核查

网络时代&#xff0c;传统扫描仪需求萎缩&#xff0c;但作为扫描仪家族中重要成员&#xff0c;高速扫描仪却正经历逆势繁荣&#xff1a;因随以金融、教育、政府为代表的行业信息化建设力度不断加强&#xff0c;海量文档快速扫描及数字化存储管理需求飞涨&#xff0c;而满足这类…