织梦DedeCMS自定义表单限制IP每小时只能提交发布一次

2017-05-18 二次开发 浏览 手机预览
文章来源:http://www.imtr.cn/html/n38.html

打开plus下diy.php文件

找到

if(!is_array($diyform))
        {
            showmsg('自定义表单不存在', '-1');
            exit();
        }

再其下添加

//isset()判断是否设置了命名为dedecmsok的缓存
    if(isset($_COOKIE['dedecmsok']))
    {
	//$_COOKIE取回dedecmsok的值,判断和用户IP是否一致
	//$_SERVER['REMOTE_ADDR']参数用来获取用户的IP
	if($_COOKIE['dedecmsok'] == $_SERVER['REMOTE_ADDR'])
	{
		//若cookie存在,则提示并终止继续执行
		ShowMsg('请不要重复提交。每小时只能提交一次信息哦。','-1');
		exit();
	} else {
		//若cookie不存在,则创建一个新的cookie
		//创建的cookie命名为dedecmsok,值为用户IP,过期时间3600秒
		setcookie('dedecmsok',$_SERVER['REMOTE_ADDR'],time() + 3600,'/');
	}
    } else {			
	//如果没有找到命名为dedecmsok的缓存,则创建一个新的cookie
	//创建的cookie命名为dedecmsok,值为用户IP,过期时间3600秒
	setcookie('dedecmsok',$_SERVER['REMOTE_ADDR'],time() + 3600,'/');
    }

//用$_COOKIE[]参数取回缓存,并输出缓存信息
echo $_COOKIE['dedecmsok'];//这一句在实际应用中可删除

3600是间隔时间,数字可自行修改。单位:秒

此方法能够防止用户重复提交,但是如果用户清除cookie的话还可以可以再次提交的。

原文地址:http://www.imtr.cn/html/n38.html
  • 如果你的问题还没有解决,可以点击页面右侧的“ ”,站长收到问题后会尽快回复解决方案到你的邮箱。
  • 创造始于问题,有了问题才会思考,有了思考,才有解决问题的方法,才有找到独立思路的可能。 —— 陶行知