PHP_CURL之模拟POST登陆
2015-09-07 11:23
561 查看
CURL简介:
CURL允许你与各种的服务器使用各种类型的协议进行连接和通讯,目前支持的协议包括:http、https、ftp、gopher、telnet、dict、file、ldap,同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。(摘自手册)
总之 CURL 功能非常强大,能实现很多 file_get_contents 函数所不能实现的功能。
原理性的东西不再赘述,这里代码来说话。
CURL模拟登陆:
首先,在你的项目中建立两个文件,login.php(提交登陆)、validate.php(验证),代码清单:
login.php
[php]
view plaincopy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/9e12f1d3e499fc949c886e7c9e0484f9)
<?php
header('Content-type:text/html;Charset=utf-8');
$user = 'lee'; //登陆用户名
$pass = '123456'; //登陆密码
$va_url = 'http://localhost/validate.php'; //验证的 url 链接地址
$post_fields = "loginname={$user}&loginpass={$pass}"; //post提交信息串
$curl = curl_init(); //初始化一个cURL会话,必有
//curl_setopt()函数用于设置 curl 的参数,其功能非常强大,具体看手册
curl_setopt($curl, CURLOPT_URL, $va_url); //设置验证登陆的 url 链接
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0); //设置结果保存在变量中,还是输出,默认为0(输出)
curl_setopt($curl, CURLOPT_POST, 1); //模拟post提交
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_fields); //设置post串
$data = curl_exec($curl); //执行此cURL会话,必有
//检查是否有错误
if(curl_errno($curl)) {
exit('Curl error: ' . curl_error($curl));
}
curl_close($curl); //关闭会话
validate.php
[php]
view plaincopy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/9e12f1d3e499fc949c886e7c9e0484f9)
<?php
header('Content-Type:text/html;Charset=utf-8');
if ($_POST['loginname'] == 'lee' && $_POST['loginpass'] == '123456') {
echo '<script>alert("登陆成功!");</script>';
} else {
echo '<script>alert("登陆失败!");</script>';
}
登陆成功,JS 弹出“登陆成功”;登陆失败,JS弹出“登陆失败”。
注:原创文章,转载请注明出处:/article/1818787.html
CURL允许你与各种的服务器使用各种类型的协议进行连接和通讯,目前支持的协议包括:http、https、ftp、gopher、telnet、dict、file、ldap,同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。(摘自手册)
总之 CURL 功能非常强大,能实现很多 file_get_contents 函数所不能实现的功能。
原理性的东西不再赘述,这里代码来说话。
CURL模拟登陆:
首先,在你的项目中建立两个文件,login.php(提交登陆)、validate.php(验证),代码清单:
login.php
[php]
view plaincopy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
<?php
header('Content-type:text/html;Charset=utf-8');
$user = 'lee'; //登陆用户名
$pass = '123456'; //登陆密码
$va_url = 'http://localhost/validate.php'; //验证的 url 链接地址
$post_fields = "loginname={$user}&loginpass={$pass}"; //post提交信息串
$curl = curl_init(); //初始化一个cURL会话,必有
//curl_setopt()函数用于设置 curl 的参数,其功能非常强大,具体看手册
curl_setopt($curl, CURLOPT_URL, $va_url); //设置验证登陆的 url 链接
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0); //设置结果保存在变量中,还是输出,默认为0(输出)
curl_setopt($curl, CURLOPT_POST, 1); //模拟post提交
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_fields); //设置post串
$data = curl_exec($curl); //执行此cURL会话,必有
//检查是否有错误
if(curl_errno($curl)) {
exit('Curl error: ' . curl_error($curl));
}
curl_close($curl); //关闭会话
validate.php
[php]
view plaincopy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
<?php
header('Content-Type:text/html;Charset=utf-8');
if ($_POST['loginname'] == 'lee' && $_POST['loginpass'] == '123456') {
echo '<script>alert("登陆成功!");</script>';
} else {
echo '<script>alert("登陆失败!");</script>';
}
登陆成功,JS 弹出“登陆成功”;登陆失败,JS弹出“登陆失败”。
注:原创文章,转载请注明出处:/article/1818787.html
相关文章推荐
- zabbix安装------安装php
- php——$_GET应用
- php中使用引用和global
- 清除Teleport的tppabs标签
- php 获取隔日日期
- PHP是怎么运行的
- 【laravel】CRUD数据库操作基础记录
- PHP中的NULL类型
- 系统吞吐量(TPS)、用户并发量、性能测试概念和公式
- 设置php中session过期时间
- PhpStorm+xdebug搭建php远程调试环境
- 介绍50个 WordPress 动作挂钩
- YII 配置详细说明
- PHP Web木马扫描器代码
- php——单引号与双引号的区别
- 两千行PHP学习笔记
- PHP二维数组根据某个数组元素排序
- FTP配置和用户设置权限
- PHP自定义函数官方文档
- PHP实现上一篇、下一篇