王志勇 发表于 2009年07月25日 23:38
防灌水程序的原理如下,本程序写在一个留言判别的公用组件如judge.php,此文件被其它文件使用include()函数包含引用:
<?$te=30; //可在每个需要引用此公用组件的程序如post.php中声明30秒内只能发一次帖,如果省略$te=30;,那么在如下的一行会将其默认为60。
if (!$te) $te=60;
$t9=time();
if ($t9-$_COOKIE[te]<$te) $kx.="您的两次发帖时间不能少于".$te."秒。";
if ($kx) {……} //给网友端(用户端)提示错误,并且程序不运行
?>
然后在post.php中写入Cookies,如下:
<?if (!$kx) setcookie("te",$t9,$t9+$te,"/");?>
封IP程序的原理如下:
<?$ip=$_SERVER["REMOTE_ADDR"];
$i=…… //$i是从数据库中提取的封IP列表,例如$i的值为"125.33.125.255,133.134.99.1",多个IP用逗号隔开,此值可以在网站后台修改。因为网站后台的结构不同,本文中没有说明修改此值的程序,请程序员自行编写程序。因为下面的程序使用strpos()函数,而不是用循环程序来判断用户的IP是否存在于此$i的值当中,所以可以设置很多个需要封闭的IP,几百个也不会很影响程序的效率。当用户端写入Cookies后,用户已经被完全封闭IP,$i的值也可以全部删除。
$j=$_COOKIE[pe];
$h="您的IP地址已经被锁定。";
if ($j) $kx.=$h;
elseif (strpos($i,$ip)!==false){$kx.=$h;
if (!$j) setcookie("pe","50",time()+86400*9,"/");}
if ($kx) {……} //给网友端(用户端)提示错误,并且程序不运行
?>
倒数第2行是封闭IP 9天,如果需要让封闭IP为其它的天数,可以修改86400*9为其它值,例如86400*30是封闭IP 30天。本程序的思路是由if ($j) $kx.=$h;这一行判断,如果$_COOKIE[pe]的值不为空,则直接提示IP已被封闭;如果$_COOKIE[pe]为空,则用if (strpos($i,$ip)!==false)判断用户的IP是否在列表当中,如果在列表当中,则提示IP已被封闭,并且写入Cookies。使用Cookies和IP列表双重判断,增加了判断的条件和准确性。
置顶的文章:
论朋友圈可以发什么?
短信验证开发的方案分享
巡回更新:2018-09-21
速度是永恒的主题
UTF-8、HTTPS原来都是浮云
https安全吗?
独立博客有必要安装https吗?
近期的主题:
麻烦大了,今天又遇到了灾难性的麻烦!
Win10系统的2个bug
新网的域名注册-实名-信息模板管理的bug的解决方法:提示“请填写3-4位数字”
委屈和脾气
Eonval项目的开发进度和最难以解决的部分(2)
select标签的一个bug:某些浏览器下显示为灰色
30岁和40岁最大的区别
安卓手机root已知的作用罗列
Eonval的logo设计历程和含义(附截图)
劳累中的开发(附截图)
新年的刘谦魔术小感想(2)
凡事成功的一个小秘诀:拒绝拖延,不要等最佳状态
版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。
与此相关的链接
自由勇专栏
Blog存档 Archives
2019年02月
2019年01月(30)
2018年12月(30)
2018年11月(30)
2018年10月(30)
2018年09月(17)
2016年-2017年(9)
2014年06月-09月(10)
2013年 +