js 防止恶意刷新_php防止恶意频繁刷新页面或form提交

php防止恶意频繁刷新页面或form提交

很多方法:(以下仅简单方法的简单思路,对于防止菜鸟“***”足矣):

1、检测referer来源地址是否为本站。($_SERVER['HTTP_REFERER'])

2、使用验证码来验证数据提交的合法性,能使用验证码就尽量使用。

3、记录IP,一定时间内禁止此ip进行二次提交/刷新。

4、前台用js生成随机加密码。

等等......

自己根据网上的实例瞎弄了一个(仅供参考):

fbf34e1b835a41e6c8db6ec46c26196a.png

646b783f1e2814c1c590f5949edaa52c.png<?php

session_start();

function getIps(){

if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')){

$IP = getenv('HTTP_CLIENT_IP');

} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {

$IP = getenv('HTTP_X_FORWARDED_FOR');

} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {

$IP = getenv('REMOTE_ADDR');

} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {

$IP = $_SERVER['REMOTE_ADDR'];

}

return $IP ? $IP : "unknow";

}

function allowRefresh($parameter){

date_default_timezone_set('Asia/Shanghai');

$nowUserIp = getIps();

$allowOldTime = md5($parameter.$nowUserIp);

$allowTime = 3;//防刷新时间。单位:秒 10秒之后才能再次提交(刷新)

if(!isset($_SESSION[$allowOldTime])){

$_SESSION[$allowOldTime] = time();

return true;

}

elseif(time() - $_SESSION[$allowOldTime] > $allowTime){

$_SESSION[$allowOldTime] = time();

return true;

}

else{

return false;

}

}

if($_GET){

$k=$_GET['k'];

$submitKey=$_GET['submitKey'];

$toCheckStr=$k.$submitKey;

if(empty($k)||empty($submitKey)||($submitKey !== 'true')){

die('errormsg');

}

if(allowRefresh($toCheckStr)==true){

echo 'Congratulations!
mysql听令:去搜索俺想要的结果!继续往下执行...';

}

else{

echo '请不要频繁提交';

}

}

?>

72c063e9cc723e26686b04497919617b.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值