2014-09-05
今天再次学习 curl
PHP 提供了curl_*的系列函数来进行操作curl。
常用的有以下几个:
Curl_init 初始化一个curl 会话
Curl_close 这个当然是关闭咯- -!
Curl_error 返回当前会话的错误信息
Curl_errno 错误编号
Curl_setopt 设置一个选项,这个函数很重要
Curl_setopt_array 这个和上面的curl_setopt 一样,不同的是这个一次可以设置多个选项
Curl_exec 执行curl 会话
这几个算比较常用的了,其他的函数如果要用自己Google。
下面我们来模拟GET 请求:
[php]
$ch = curl_init();//这里初始化了一个会话
curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');//设置了一个遇$ch 会话相关的地址
curl_exec($ch);//执行会话
curl_close($ch);//关闭会话
$ch = curl_init();//这里初始化了一个会话
curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');//设置了一个遇$ch 会话相关的地址
curl_exec($ch);//执行会话
curl_close($ch);//关闭会话
浏览一下,google 的首页内容就输出在浏览器上了。
如果你问那我不要他输出,而是返回呢?
那么加个选项就行了。
[php]
$ch = curl_init();//这里初始化了一个会话
curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');//设置了一个遇$ch 会话相关的地址
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//这里告诉curl 我不要输出我要返回
$data = curl_exec($ch);//那么在执行的时候curl 就会返回给你了。哈哈,太听话了..
curl_close($ch); //关闭会话
$ch = curl_init();//这里初始化了一个会话
curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');//设置了一个遇$ch 会话相关的地址
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//这里告诉curl 我不要输出我要返回
$data = curl_exec($ch);//那么在执行的时候curl 就会返回给你了。哈哈,太听话了..
curl_close($ch); //关闭会话上面是模拟GET 请求,那么下面来模拟POST 的:
[php] view plaincopyprint?//这里用了我自己的程序来做实验.. - -!
$url = 'http://www.phpfamily.cn/Shop/login?formaction=login';//POST 到的地址
$query = 'name=xiaokai&password=xiaokai';//这个是提交的数据
$ch = curl_init($url);//初始化的时候就关联一个url 地址
curl_setopt($ch, CURLOPT_POST, true);//这里告诉他我要用post 方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);//给他post 的数据
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//我不要输出要返回
$data = curl_exec($ch);//OK,执行后返回给你了。
curl_close($ch);//关闭
echo $data;//输出结果,提示登录成功了。
//这里用了我自己的程序来做实验.. - -!
$url = 'http://www.phpfamily.cn/Shop/login?formaction=login';//POST 到的地址
$query = 'name=xiaokai&password=xiaokai';//这个是提交的数据
$ch = curl_init($url);//初始化的时候就关联一个url 地址
curl_setopt($ch, CURLOPT_POST, true);//这里告诉他我要用post 方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);//给他post 的数据
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//我不要输出要返回
$data = curl_exec($ch);//OK,执行后返回给你了。
curl_close($ch);//关闭
echo $data;//输出结果,提示登录成功了。
自己写次代码,不要copy,因为copy 你永远也学不会。
上面代码执行后会提示登录成功,那已经登录成功了。
但是有个问题,这样登录没有保存刷新次登录就失效了,这个问题就和你的浏览器没开cookie 是
一样的。那么下面我们来给curl 开cookie。
[php]
$url = 'http://www.phpfamily.cn/Shop/login?formaction=login';//POST 到的地址
$query = 'name=xiaokai&password=xiaokai';//这个是提交的数据
$jar = realpath('cookie.txt');//cookie 保存的地址
$ch = curl_init($url);//初始化的时候就关联一个url 地址
curl_setopt($ch, CURLOPT_POST, true);//这里告诉他我要用post 方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);//给他post 的数据
curl_setopt($ch, CURLOPT_COOKIEJAR, $jar);//这里给他cookie 文件保存的地址,然后就会自动将cookie
内容写入到cookie 文件中了。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//我不要输出要返回
$data = curl_exec($ch);//OK,执行后返回给你了
curl_close($ch);//关闭
echo $data;//输出结果,提示登录成功了。
$url = 'http://www.phpfamily.cn/Shop/login?formaction=login';//POST 到的地址
$query = 'name=xiaokai&password=xiaokai';//这个是提交的数据
$jar = realpath('cookie.txt');//cookie 保存的地址
$ch = curl_init($url);//初始化的时候就关联一个url 地址
curl_setopt($ch, CURLOPT_POST, true);//这里告诉他我要用post 方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);//给他post 的数据
curl_setopt($ch, CURLOPT_COOKIEJAR, $jar);//这里给他cookie 文件保存的地址,然后就会自动将cookie
内容写入到cookie 文件中了。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//我不要输出要返回
$data = curl_exec($ch);//OK,执行后返回给你了
curl_close($ch);//关闭
echo $data;//输出结果,提示登录成功了。
好了, 就加了个CURLOPT_COOKIEJAR 选项就OK 了, 是不是很简单。注意这里的
CURLOPT_COOKIEJAR 的值必须是绝对路径,也就是说你指定的cookie 文件保存路径必须是绝对路径。
[php]
$url = 'http://www.phpfamily.cn/Shop/register';
$jar = realpath('cookie.txt');//cookie 保存的地址
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_COOKIEFILE, $jar);//这里指定cookie 文件保存的路径
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);//关闭
echo $data;
$url = 'http://www.phpfamily.cn/Shop/register';
$jar = realpath('cookie.txt');//cookie 保存的地址
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_COOKIEFILE, $jar);//这里指定cookie 文件保存的路径
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);//关闭
echo $data;
继续, 上面保存了cookie 那么再次模拟登录的时候就不用POST 了, 加个选项
CURLOPT_COOKIEFILE 就可以直接登录了。
再次预览,会提示你已经登录过了。这样登录后就保存cookie 然后就可以干任何事了,比如提交
评论、留言、等等。
1
CI框架连接数据库配置操作以及多数据库操作
09-05
2
asp 简单读取数据表并列出来 ASP如何快速从数据库读取大量数据
05-17
3
C语言关键字及其解释介绍 C语言32个关键字详解
04-05
4
C语言中sizeof是什么意思 c语言里sizeof怎样用法详解
04-26
5
最简单的asp登陆界面代码 asp登陆界面源代码详细介绍
04-12
6
PHP中的魔术方法 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep,
09-05
7
PHP中的(++i)前缀自增 和 (i++)后缀自增
09-05
8
PHP中include和require区别之我见
09-05
常用dos命令及语法
2014-09-27
将视频设置为Android手机开机动画的教程
2014-12-11
php递归返回值的问题
2014-09-05
如何安装PHPstorm并配置方法教程 phpstorm安装后要进行哪些配置
2017-05-03
java中的info是什么意思
2022-03-24
PHP 教程之如何使用BLOB存取图片信息实例
2014-09-05
IcePHP框架中的快速后台中的通用CRUD功能框架
2014-09-05
单片机编程好学吗?单片机初学者怎样看懂代码
2022-03-21
PHP数组函数array
2014-09-05
学ug编程如何快速入门?
2022-03-17
镜解视界游戏下载v1.1.5 官方安卓版
角色扮演 918.7M
下载铁拳5暗之复苏手机版下载v2022.02.18.18 安卓双人街机版
动作闯关 1.10G
下载武娘外传手游下载v2.2 安卓最新版
角色扮演 376.4M
下载闪耀暖暖越南服官方版下载v2.7.1500283 安卓版
经营养成 2.59G
下载萌幻西游手游官方版下载v2.4.1 安卓版
卡牌对战 385.8M
下载三国戏英杰传官方版本下载v6.87.2077 安卓最新版
策略塔防 639.8M
下载名将集手游下载v1.0.6 安卓版
角色扮演 405.8M
下载破天一剑官方正版手游下载v6.90 安卓最新版本
角色扮演 1.16G
下载银河战舰手游官方版下载v1.31.87 安卓最新版
下载
碧蓝航线台服官方版下载v7.1.1 安卓版
下载
虎符传奇正式版下载v1.8 安卓最新版
下载
植物大战僵尸中国馆手机版随机植物下载v2024.05.01 安卓中国版
下载
漫威终极逆转手游最新版下载v112.0.0 安卓官服
下载
起源之潮官方版手游下载v1.0.4 安卓最新版
下载
勇者养成记游戏下载v1.226 安卓手机版
下载
诸神皇冠最新版本下载v2.1.28.65181 安卓客户端
下载