wordpress限制ip表单每日提交次数
本文最后更新于 745 天前,其中的信息可能已经有所发展或是发生改变。
在我使用wordpress开发表单时,客户需求限制表单提交人的ip提交次数,这是很常见的功能,可以有效过滤无用的垃圾信息提交。

首先需要获取当前访问用户的ip地址,代码如下:

function get_ip(){
	if(!empty($_SERVER['HTTP_CLIENT_IP'])){$ip = $_SERVER['HTTP_CLIENT_IP'];}
	elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];}
	else{$ip = $_SERVER['REMOTE_ADDR'];}
	return $ip;
}

那么使用$ip = get_ip();就能将用户ip赋予一个变量,然后再创建一个变量表示用户ip提交次数上限。

$ip_number_no = 2;//限制ip访问次数

接下来需要使用wordpress的$wpdb对象,他是wordpress的数据库对象,通过它来对用户提交的表单进行查询

使用$wpdb->get_var(“sql语句”),如果有结果,可以返回查询结果数,无结果则返回FALSE。更多的$wpdb用法和具体函数会在以后的文章中说明

$get_post_ip_num_check = $wpdb->get_var("
	SELECT COUNT(*) 
	FROM $wpdb->posts 
	WHERE post_type = 'customer' 
	AND post_excerpt = '".$ip."' 
	AND date_format(post_date,'%Y-%m-%d') = curdate() "
);
if($get_post_ip_num_check >= $ip_number_no){
	$ip_check_status = false;
	//达到次数限制,不允许再次提交
}

在上面sql语句中,查询出wp_posts这个表中,文章类型为自定义类型customer、表单提交人ip(这里使用文章的摘要字段作为ip)、表单提交时间为当前时间的总数量。

post_date的日期格式为:年-月-日 小时:分钟:秒。curdate()表示当前日期:年-月-日,所以需要对字段post_date进行格式转化。

这条查询语句表示当前用户在当天内提交成功的总次数,只要对其进行限制,给提交动作增加一个判断即可达到需求目的。

文章原文:https://www.luojiasan.com/category/wordpress/1115.html
文章来源:https://www.luojiasan.com
[声明]本站内容除特别声明外,均属站长手写原创内容。
1、本站所有原创文章、图片等资料,如需转载使用,必须附上来源出处及链接方式;
2、若本站侵犯到您的权益或任何版权问题,请立即告知本站,我们将及时删除并致以最深的歉意!
3、本站转载文章版权归原作者所有,内容为作者个人观点,本站只提供参考并不构成任何投资及应用建议。任何本站转载文章链接及得到的资讯、产品、服务,本站概不负责,亦不负任何法律责任。
暂无评论

发送评论 编辑评论


				
上一篇
下一篇