接口验证每个ip每小时只能访问2次(自己实验:有待改进)
<?php
// echo md5("user");die;
/*
查询
接口地址:http://apis.juhe.cn/mobile/get
支持格式:json/xml
请求方式:get
请求示例:http://localhost/day9.8/port.php?key=c7d81b6949462e2f1bb5fdf18dd1d006&id=用户id&dtype=xx
请求参数说明:
id int 是 用户id
key string 是 应用APPKEY(应用详细页查询)
dtype string 否 返回数据的格式,xml或json,默认json
返回参数说明:
error_code int 返回码
reason string 返回说明
result string 返回结果集
*/
// 模拟
// $key=c7d81b6949462e2f1bb5fdf18dd1d006;
// $id=1;
// 接收用户信息
$key=$_GET['key'];
$id=$_GET['id'];
// 如果用户写dtype接收值,没有默认json
$dtype=isset($_GET['dtype'])?$_GET['dtype']:'json';
// 服务器生成key值和用户key值对比
$app_key=md5("news$id");
// if ($app_key!=$key) {
// echo "非法请求";die;
// }
/**
* 验证每小时只能使用2次
*/
if (!isset($_COOKIE['name'])) {
setcookie('name','');
}
// var_dump($_COOKIE);die;
if (!isset($_COOKIE['name']['ip'])) {
setcookie('name[ip]',$_SERVER['REMOTE_ADDR']);
}
if (!isset($_COOKIE['name']['num'])) {
setcookie('name[num]',1);
}
// var_dump($_COOKIE['name']['num']);die;
if (@!isset($_COOKIE['name']['h'])) {
setcookie('name[h]',date("H"));
}
// var_dump($_COOKIE['name']);die;
// 每小时重置一次
if (@$_COOKIE['name']['h']!=date("H")) {
setcookie('name[num]',0);
setcookie('name[h]',date("H"));
}
// 超过2次禁止
if (@$_COOKIE['name']['num']<2) {
// 生成接口
$pdo=new PDO("mysql:host=localhost;dbname=news","root","root");
$pdo->exec("set names utf8");
// 得到数据库的内容
$sql="select * from hao123";
$data=$pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
if ($dtype=='xml') {
// 生成xml格式数据
header("content-type:text/xml;charset=utf8");
echo "<?xml version='1.0' encoding='utf-8'?>";
echo "<news>";
foreach ($data as $key => $value) {
echo "<new>";
echo "<title><![CDATA[{$value['link']}]]></title>";
echo "<link><![CDATA[{$value['title']}]]></link>";
echo "</new>";
}
echo "</news>";
}else{
// 生成json格式数据
header("content-type:text/html;charset=utf8");
echo json_encode($data,JSON_UNESCAPED_UNICODE);
}
@setcookie('name[num]',$_COOKIE['name']['num']+1);
}else{
die('同一ip一小时之内只允许访问2次');
}
?>
// echo md5("user");die;
/*
查询
接口地址:http://apis.juhe.cn/mobile/get
支持格式:json/xml
请求方式:get
请求示例:http://localhost/day9.8/port.php?key=c7d81b6949462e2f1bb5fdf18dd1d006&id=用户id&dtype=xx
请求参数说明:
id int 是 用户id
key string 是 应用APPKEY(应用详细页查询)
dtype string 否 返回数据的格式,xml或json,默认json
返回参数说明:
error_code int 返回码
reason string 返回说明
result string 返回结果集
*/
// 模拟
// $key=c7d81b6949462e2f1bb5fdf18dd1d006;
// $id=1;
// 接收用户信息
$key=$_GET['key'];
$id=$_GET['id'];
// 如果用户写dtype接收值,没有默认json
$dtype=isset($_GET['dtype'])?$_GET['dtype']:'json';
// 服务器生成key值和用户key值对比
$app_key=md5("news$id");
// if ($app_key!=$key) {
// echo "非法请求";die;
// }
/**
* 验证每小时只能使用2次
*/
if (!isset($_COOKIE['name'])) {
setcookie('name','');
}
// var_dump($_COOKIE);die;
if (!isset($_COOKIE['name']['ip'])) {
setcookie('name[ip]',$_SERVER['REMOTE_ADDR']);
}
if (!isset($_COOKIE['name']['num'])) {
setcookie('name[num]',1);
}
// var_dump($_COOKIE['name']['num']);die;
if (@!isset($_COOKIE['name']['h'])) {
setcookie('name[h]',date("H"));
}
// var_dump($_COOKIE['name']);die;
// 每小时重置一次
if (@$_COOKIE['name']['h']!=date("H")) {
setcookie('name[num]',0);
setcookie('name[h]',date("H"));
}
// 超过2次禁止
if (@$_COOKIE['name']['num']<2) {
// 生成接口
$pdo=new PDO("mysql:host=localhost;dbname=news","root","root");
$pdo->exec("set names utf8");
// 得到数据库的内容
$sql="select * from hao123";
$data=$pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
if ($dtype=='xml') {
// 生成xml格式数据
header("content-type:text/xml;charset=utf8");
echo "<?xml version='1.0' encoding='utf-8'?>";
echo "<news>";
foreach ($data as $key => $value) {
echo "<new>";
echo "<title><![CDATA[{$value['link']}]]></title>";
echo "<link><![CDATA[{$value['title']}]]></link>";
echo "</new>";
}
echo "</news>";
}else{
// 生成json格式数据
header("content-type:text/html;charset=utf8");
echo json_encode($data,JSON_UNESCAPED_UNICODE);
}
@setcookie('name[num]',$_COOKIE['name']['num']+1);
}else{
die('同一ip一小时之内只允许访问2次');
}
?>