b.php的代码
复制代码 代码如下:
<?php
//只能通过post方式访问
if ($_SERVER['REQUEST_METHOD'] == 'GET')
{header('HTTP/1.1 404 Not Found'); die('亲,页面不存在');}
session_start();
$fs1=$_POST['a'];
$fs2=$_POST['b'];
//防刷新时间,单位为秒
$allowTime = 30;
//读取访客ip,以便于针对ip限制刷新
/*获取真实ip开始*/
if ( ! function_exists('GetIP'))
{
function GetIP()
{
static $ip = NULL;
if ($ip !== NULL)
{
return $ip;
}
if (isset($_SERVER))
{
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
/* 取X-Forwarded-For中第x个非unknown的有效IP字符? */
foreach ($arr as $xip)
{
$xip = trim($xip);
if ($xip != 'unknown')
{
$ip = $xip;
break;
}
}
}
elseif (isset($_SERVER['HTTP_CLIENT_IP']))
{
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
else
{
if (isset($_SERVER['REMOTE_ADDR']))
{
$ip = $_SERVER['REMOTE_ADDR'];
}
else
{
$ip = '0.0.0.0';
}
}
}
else
{
if (getenv('HTTP_X_FORWARDED_FOR'))
{
$ip = getenv('HTTP_X_FORWARDED_FOR');
}
elseif (getenv('HTTP_CLIENT_IP'))
{
$ip = getenv('HTTP_CLIENT_IP');
}
else
{
$ip = getenv('REMOTE_ADDR');
}
}
preg_match("/[\d\.]{7,15}/", $ip, $onlineip);
$ip = ! empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';
return $ip;
}
}
/*获取真实ip结束*/
$reip = GetIP();
//相关参数md5加密
$allowT = md5($reip.$fs1.$fs2);
if(!isset($_SESSION[$allowT])){
$_SESSION[$allowT] = time();
}
else if(time() - $_SESSION[$allowT]-->$allowTime){
$_SESSION[$allowT] = time();
}
//如果刷新过快,则直接给出404header头以及提示
else {header('HTTP/1.1 404 Not Found'); die('来自'.$ip.'的亲,您刷新过快了');}
?>
代码很简单,无非是把ip,以及通过POST方式提交到需要防刷新页面的数据经过md5加密后写入session中,再通过存储的session来判断刷新时间间隔从而决定是否允许刷新。需要说明的是"$fs1=$_POST['a'];"、"$fs1=$_POST['a'];"两个参数是指其他页面通过post方式提交到需要防刷新页的参数。之所以除了ip之外还要加这些参数的原因是为了区别不同的post结果。(实际上所谓的防刷新也就是防止某一页面被反复提交。)
更具体的说,比如上述代码放在b.php页面的开头,我们在a.html页面有一个如下表单:
复制代码 代码如下:
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>b.html</title>
</head>
<body>
<form action="b.php" method="post" >
<input type="hidden" id="a" name="a" value="a"/>
<input type="hidden" id="b" name="b" value="b"/>
<button name="" type="submit" >提交</button>
</form>
</body>
</html>
可以看到这个页面提交的a和b 2个参数正是前面b.php中的2个参数(实际上应该反过来说,由提交页面的参数来决定)。在前面的php代码中,已经确定只能通过post访问被提交数据的页面,所以直接输入地址会得到一个404头的错误页面,只能通过post方式来得到页面,同时post刷新的时候会自己带上参数地址,这样就实现了同一页面每个ip的防止刷新效果。
另外我们可以在被post的页面增加通过referer判定来源网站,防止跨站提交,不过referer可以伪造,而且firefox和ie8经常莫名其妙出现referer丢失的情况,所以暂时也就不加这个代码。
相关推荐:
SEO需要什么语音,seo需要考虑什么 ,学生作业ai
ChatGPT无法加载?检查您的网络设置并尝试重启ChatGPT,解决您的使用困扰!,ai光晕制作
“洗稿技巧如何让你的文章脱颖而出,轻松提升内容创作水平!”,台州椒江seo企业排名
SEO百度优化:让你的品牌在搜索引擎中脱颖而出,日照网站推广策划
ChapGPT免费爬墙,轻松访问全球互联网资源!,蜜桃ai插画
ChatGPT宕机两小时,OpenAI紧急修复,用户期待AI恢复正常服务,oppo小布ai
AI一键生成原创文章,让创作更高效更轻松!
SEO优化流程:助力网站快速提升排名的关键策略,1745ai
ChatGPT进不去怎么办?解决方案与技巧,轻松畅享智能对话,ai va
优化入口:提升网站流量与转化率的秘密武器,琼海关键词排名品牌
seo用什么写属性写,seo属于什么 ,芭田科学施肥AI
ChatGPT当前不可用?背后的原因与解决方案全解析,ai propos
AI搜索相似文章怎么做?揭秘高效文章检索的核心技术!,程式ai软件
seo都有什么意思,seo 啥意思 ,ai园林
打破创作边界,无限可能无限制生成文章的AI
二创AI:打破创意壁垒,引领未来内容创作新潮流,背影教案网站建设游戏
ChatGPT已识别但不可用?揭秘背后原因与解决方案!,小狸ai和斑马ai语文
SEO优化10种策略:提升网站排名的有效方法,帅气ai男头白底
ChatGPT崩了?用户称打开是一片空白,背后隐藏了什么?,ai 新技巧
SEO检测,让网站排名飞升的秘密武器,高端快消食品营销推广
WPJam:打破网站管理的壁垒,打造极致用户体验,广东谷歌seo工具
亚马逊seo是什么公司的,“亚马逊” ,ai玩底特律
智能AI生成文章释放创作新可能
文章自动生成AI:助力写作新时代,让创作更高效
SEO出来,打破流量瓶颈,助力企业增长的关键策略,南昌营销推广代理商电话
【SEO优化全攻略】提升网站流量的终极秘籍,带你轻松玩转搜索引擎优化!,金融网站推广维护
ChatGPT破解:让AI打破语言与思维的边界,ai模板vis
360刷排名工具选哪家?揭秘2025年最强排名优化工具!,ai写作网站哪个好一点
seo菲律宾是做什么,菲律宾网址排名 ,openl ai
seo逻辑是什么,seo思路 ,语音主播怎么ai写作业
SEO人工优化-让你的网页轻松登上搜索引擎首页,ai主母
优化提长:让企业效能提升的秘密武器,长沙网站建设创意
SEO武汉:如何提升武汉地区网站的搜索引擎排名,景区网站建设费用
ChatGPT崩溃!用户反馈网页端无法访问,修复急需,ai院子
ChatGPT与讯飞:AI语音与智能对话的完美融合,ai直角变圆角
AI软件不用登录,让你的工作更高效轻松,智能ai写作改稿怎么改
seo要公司什么资源,做seo需要用到什么软件 ,ai明星换了
seo运营经理是什么,seo和运营的区别 ,皖妍ai宁慕晴o
“只能写作”:在创作的世界里,选择文字,就是选择自由,云南关键词排名推广报价
文章AI生成软件高效创作新纪元
创作新时代:自动生成文章AI的魅力与未来
“新热度”:引领潮流的力量,如何趋势的脉搏,浙江通用网站建设特点
ChatGPT坏了用什么?替代方案,满足你的智能对话需求,星际一的ai
“扩写AI”-引领写作革命,开启智能创作新时代,dede seo 标题如何填写
OpenPose大白话解释:让你轻松理解姿态识别的神奇技术,ai天天晴
ChatGPT服务异常:为何影响到你的工作和生活?如何有效解决?,ai怎么保持圆角不变
一秒采集:提升效率、创造价值的秘密武器,苏州网站整站优化
360ai问答-智能时代的全能助手,未来的智慧生活,ai生成白底
为什么网站要做seo,网站做seo的目的是什么 ,ai初选
未来写作新模式文章撰写AI如何助力内容创作