王志勇 发表于 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列表双重判断,增加了判断的条件和准确性。
置顶的文章:
股骨头坏死的中早期修复方法
Windows流畅度300%以上体感的操作
超低价享受i7-7700的体验
家用电脑理性优化升级天梯图之2026
服务器版Linux系统的选择之2026
秒会+实战PHP程序设计培训(2)
如何快速自制CPU天梯图?
我不明白你明不明白我明白(明白不)
近期的主题:
关于是否撤文章的问题
程序的及时作用
数码评测(76):万元的折叠屏手机
数码评测(75):DDR 3/4/5的性能测试
健康维护(3):为什么股骨头坏死中期可能能治疗?
博客近期大调整已经初步完成
本机安装PHP 8
健康维护(2):股骨头坏死有多接近?
北京之行2026
健康维护(1):为什么晚上睡觉时会肚子疼?
https利弊(5):技术上的定向安全与垄断本质
博客正在加紧调整中
十分感谢博友点评:自由勇 二十年博客的老程序员
DIY(35-3):6路×2 USB全自动电脑切换器
这次突然特别理解老罗
支架设计(1):船型开关固定
DIY(35-2):6路×2 USB全自动电脑切换器
今天起名未成功
DIY(37):我是如何坚持完成这些DIY作品的?
DIY(36):支架、外壳如何快速1:1精确定模?
版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。
与此相关的链接
自由勇专栏
Blog存档 Archives
2025年-2026年03月(10)
2024年(13)
2023年 +