CURL
http 协议:文件/数据 上传
【php-mysql/php-mysqli】
API/DLL扩展类
var_dump();
基础
网络资源访问和下载
网页爬虫、模拟登陆、上传、下载、获取接口数据
支持协议 FTP .FTPS/HTTP/HTTPS...
使用 [基本格式]:
<?php
$ch = curl_init();//初始化
curl_setopt($ch,CURLOPT_URL,"http://www.baidu.com"); //执行
curl_exec($ch);//获取
curl_close($ch);//关闭
[非输出版本]:
<?php
header('content-type:text/html;charset=utf-8');
//1.初始化
$ch=curl_init();
//2.设置选项
curl_setopt($ch,CURLOPT_URL,'http://www.baidu.com');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//返回结果不直接输出
//3.执行cURL
$res=curl_exec($ch);
$res=str_ireplace('<img src="//www.baidu.com/img/bd_logo.png" width="270" height="129">','景山老师',$res);
echo $res;
//4.关闭
curl_close($ch);
常用函数
file();
练习
HTTPS 提交
$ch = curl_init();//初始化
curl_setopt($ch,CURLOPT_URL,"https://github.com"); //执行
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); //
curl_exec($ch);//获取
curl_close($ch);//关闭
POST 提交
<?php
header('content-type:text/html;charset=utf-8');
$data="username=jingshan&pwd=123456"; //提交的数据
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,'http://test.5ihy.com/action/action.php');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //以文件流的形式返回
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //发送POST请求
$res=curl_exec($ch); //不直接显示
curl_close($ch);
echo $res;
查找手机号信息(百度API接口)
<?php
header('content-type:text/html;charset=utf-8');
$phone='18046200240';
$ch = curl_init(); //初始化
$header = array(
'apikey:f1f70f89078d7af7e436e1b59ed10dc4',
);
//添加apikey到header
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_URL,$url);
//执行
$res = curl_exec($ch); //接收
var_dump($res); //显示
获取天气信息 [百度API]
$ch = curl_init();
$url = 'http://apis.baidu.com/apistore/weatherservice/citylist?cityname=%E6%9C%9D%E9%98%B3';
$header = array(
'apikey: f1f70f89078d7af7e436e1b59ed10dc4',
);
// 添加apikey到header
curl_setopt($ch, CURLOPT_HTTPHEADER , $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 执行HTTP请求
curl_setopt($ch , CURLOPT_URL , $url);
$res = curl_exec($ch);
var_dump(json_decode($res));
上传文件
header('content-type:text/html;charset=utf-8');
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, "http://test.5ihy.com/action/upload.php");
curl_setopt($ch,CURLOPT_POST,1);//设置post方式发送数据
curl_setopt($ch, CURLOPT_POSTFIELDS, [// 设置上传的文件
'file' => new CURLFile(realpath('./images/bd_logo.png'))//绝对路径 php5.4
]);
$c = curl_exec($ch);
curl_close($ch);
文件上传 [版本2]
header('content-type:text/html;charset=utf-8');
$curlFile = curl_file_create(realpath('./images/bd_logo.png'),'image/jpeg','test_name');
$data=array('file'=>$curlFile);
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,'http://test.5ihy.com/action/upload.php');
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_exec($ch);
curl_close($ch);
下载图片
header('content-type:text/html;charset=utf-8');
$ch=curl_init();// 初始化 数据连接
curl_setopt($ch,CURLOPT_URL,'https://www.baidu.com/img/bd_logo1.png');// 设置 URL
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);// 设置不显示
$res=curl_exec($ch);// 执行
$info=curl_getinfo($ch);// 获取信息
$filename="./myPic.jpg";
file_put_contents($filename, $res);//写入文件
$size=filesize($filename);// 获取文件名字
if($size!=$info['size_download']){
echo '下载数据不完整';
}else{
echo '下载数据完整';
}
下载图片 好用的方法
header('content-type:text/html;charset=utf-8');
$ch = curl_init();
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$data = curl_exec($ch);
file_put_contents('uploads/bd_logo.png',$data);
复制句柄
header('content-type:text/html;charset=utf-8);
$ch1 = curl_init();
curl_setopt($ch1,CURLOPT_URL,'http://www.baidu.com');
curl_setopt($ch1,CURLOPT_RETURNTRANSFER,true);
//复制句柄
$ch2=curl_copy_handle($ch1);
//重置选项
curl_reset($ch2);
curl_setopt($ch2,CURLOPT_URL,'Http://www.jd.com');
$res = curl_exec($ch2);
curl_close($ch1);
curl_close($ch2);
echo $res;
展示错误信息
header('content-type:text/html; charset=utf-8');
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'http://www.zheng.com/');//链接一个不存在的站点
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //设置不直接显示
$res=curl_exec($ch); //执行, 接收,返回资源
if(false===$res){ //如果失败
echo 'cURL Error:'.curl_error($ch);
echo "<br/>";
}
if($errno=curl_errno($ch)){ // 如果有 errno 信息
echo "curl_strerror:";
echo curl_strerror($errno);
echo "<br/>";
//exit;
}
$info=curl_getinfo($ch);
var_dump($info); // 打印全部信息
curl_close($ch);
数组格式进行设置
$ch=curl_init();
$options=array(
CURLOPT_URL=>'http://www.baidu.com',
CURLOPT_RETURNTRANSFER=>1
);// 数组格式设置
curl_setopt_array($ch, $options);
$res=curl_exec($ch);
curl_close($ch);
echo $res;
版本展示
var_dump(extension_loaded('curl'));
var_dump(function_exists('curl_version'));
var_dump(get_defined_functions());
curl项目
注册用户【上传、展示】
1.自己的服务器 数据库
a. user 表
user pwd 头像
b. 链接数据库
List.php
$db = new mysqli('', , , );
c.post提交数据
regsiter.php->regsiter_do.php
d.curl模拟post提交
curl.php->regsiter_do.php