如何在php上限制一个ip一天只能注册10个账户,注册多了不允许
时间格式用int型,您做起来就会简单的多,你只要做在一天凌晨到24点这个时间内,注册的个数<5就可以了!/**
客户端IP
*/
function getClientIp(){
if(getenv('HTTP_CLIENT_IP')) {
$onlineip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR')) {
$onlineip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR')) {
$onlineip = getenv('REMOTE_ADDR');
} else {
$onlineip = $_SERVER['REMOTE_ADDR'];
}
return $onlineip;
}//必须用这个,否则很多时候是取不到客户端的ip的$thisDayStart=mktime(0,0,0,date("m"),date("d"),date("Y"));//mktime($h,$i,$s,$m,$d,$y)$thisDayStart=mktime(23,59,59,date("m"),date("d"),date("Y"));//mktime($h,$i,$s,$m,$d,$y)select count(id) from com_users where addtime>=".$thisDayStart." and addtime=5了,就不能可以了
你的注册成功后的表中,需要有注册IP和注册时间字段,你在输入注册信息的页面,首先查询改IP今天注册的数量,如果大于10就拒绝注册。
例如:
$ip=getenv('REMOTE_ADDR');
$day=date('Y-m-d');
$sql="select count(*) from register where ip='$ip' and regdate='$day'";
$res=mysql_query($sql);
list($cnt)=mysql_fetch_row($res);
mysql_free_resuly($res);
if ($cnt>=10) echo '对不起,你今天注册用户太多。';
else {
echo '';
}
思路:
获取访问用户ip,查询数据库判断该ip是否可以继续注册新用户
示例
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2018/11/30
* Time: 19:35
* 限制一个ip一天只能注册10个账户
* 获取访问用户ip,查询数据库判断该ip是否可以继续注册新用户
*/
//获取数据库实例
$dsn = 'mysql:dbname=test;host=127.0.0.1';
$user = 'root';
$password = '';
try {
$db = new PDO($dsn, $user, $password,array(PDO::MYSQL_ATTR_INIT_COMMAND => "set names utf8"));
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
//获取访问用户ip
$access_user_ip = $_SERVER['REMOTE_ADDR'];
//查询数据库判断该ip是否可以继续注册新用户
$start_time = strtotime(date('Y-m-d'));//今天0点
$end_time = strtotime(date('Y-m-d').' +1 day ');//明天0点
$sth = $db->prepare('select count(*) from user where ip=:ip and created_at>:start_time and created_at<:end_time');
$sth->bindParam(':ip',$access_user_ip);
$sth->bindParam(':start_time',$start_time);
$sth->bindParam(':end_time',$end_time);
$sth->execute();
$count = $sth->fetchColumn();//当前该ip今天注册的用户总数量
if ($count>10){
exit('今天,您已注册10个新账号了,请明天再来吧');
}
源码放在github上,欢迎点星网页链接
首页:要用户表里面加入 注册ip,注册时间字段,在注册成功后,要把用户注册的时间与ip写入到数据库,
然后就是限制问题,在用户注册的时候,先查询用户表里面当天用户的ip 记录是否大于10条,如果大于,就给用户提示 ip注册已满,反之则继续注册。
这样哈看你可以理解不
用数据库多建立一个字段每次添加的时候就有一个ip存入数据库中
然后用当天的时间匹配出来
//添加IP地址以数组的形式
$requestArr['user_ip'] = $_SERVER['REMOTE_ADDR'];
//添加的时间
$requestArr['addtime'] = $date();
//从数据库取出来 ip重复校验
$if_ip = $Model->if_ip_cont($requestArr['user_ip']);
if ($if_ip > 10 and 什么时间就可以了)
{
$this->error('提交次数过多请稍后再试...');
}
*****
时间你添加下就好了
可以用redis memcache 或者mysql做一个计数器
key:获取用户IP后,用PHP内置函数ip2long,把ip地址转为整数。并拼接上当天得日期date('Ymd');
例如 xxxxx_20180501
每次用户注册时把计数器数值加1,当计数器达到10后 不允许在注册。
获取IP地址方法:
function get_real_ip(){
$ip=false;
if(!empty($_SERVER['HTTP_CLIENT_IP'])){
$ip=$_SERVER['HTTP_CLIENT_IP'];
} if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ips=explode (', ', $_SERVER['HTTP_X_FORWARDED_FOR']);
if($ip){ array_unshift($ips, $ip); $ip=FALSE; } for ($i=0; $i < count($ips); $i++){ if(!eregi ('^(10│172.16│192.168).', $ips[$i])){ $ip=$ips[$i]; break;
}
}
} return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
方法好多种,都可以实现。ssdb技术或者记录在数据库也可以做。现在(数据库方式)举例:数据库(user)表中记录每个用户注册时的ip,添加注册的时候把当前的ip记录在数据库,当然注册的时候也有注册时间的,然后每次添加一条数据的时候,查询统计一下(当天时间以内同一个ip的数量),超过了就不允许再注册了。xmj-livelife
唐太宗不修长城的主要原因
正是:君王有道三边静,何劳万里筑长城。参考资料:http:\/\/www.thegreatwall.com.cn\/phpbbs\/index.php?id=72463&forumid=1
古诗的写作要点
的末联:孤帆远影碧空尽,平平仄仄仄平仄 惟见长江天际流。仄仄平平平仄平 这一联上句第五字应平用仄,下句相应地在第五字的位置上就仄用平。两句第五字都“不论”了。再读杜甫七律篇《蜀相》前两联:丞相祠堂何处寻?○仄平平平仄平 锦官城外柏森森。○平○仄仄平平 ...
请问在幼儿园学习珠心算对上小学后学习数学的利与弊?
这是一个争论较大的话题,网上有很多这方面的文章,你可以搜索去看看。先来了解幼儿珠心算的学习过程:(一)1.认识算盘,了解各部位名称,学会打算盘的姿势及正确握笔的方法。2.0~10的认识,盘式图,珠象图,指法学习,想珠及组成分解。3.直加直减:先是在算盘上练习,一位数3~6笔加减混合算 一...
自己想创业做什么好
实际上彩票市场是一个非常特殊的投资市场,自己想创业做什么好,它考验的是每个人的智慧与恒心,不明白的人会把它当作是一种赌博,因为中奖概率低,似乎只能靠自己的运气。但正是这种规则限制了投机,可以说彩票是最具有投资性的一种理财方式。目前,利用闲钱为自己赢得第二笔收入的彩票理财已经在广州较为活跃。让我们看...
寻找一句送朋友的古诗词
5、我寄愁心与明月,随君直到夜郎西。(随君 一作:随风)——唐代李白《闻王昌龄左迁龙标遥有此寄》译文:我把我忧愁的心思寄托给明月,希望能随着风一直陪着你到夜郎以西。6、桃花潭水深千尺,不及汪伦送我情。——唐代李白《赠汪伦》译文:即使桃花潭水深至千尺,也比不上汪伦送我之情。7、正...
快速学游泳有那些诀窍?
一直线。他将保持这滑翔姿势短暂的时间,然后当他感觉速度减慢,另一划臂循环开始。再给您提供些游泳的专业游泳网站:中国游泳网 http:\/\/www.chinaswim.com\/ 51swim-游泳健身网论坛 http:\/\/www.51swim.com\/mybbs\/index.php 中国游泳 http:\/\/swimming.sinosports.net\/ 鲨鱼馆游泳网 http:\/\/www....
...来保存登录状态,用 token based 验证 用意何在?
登录页面不是一个特殊情况,如果你如果您正在使用量角器来写你的功能测试,你不需要来处理登录的任何特殊情况。基于标准: 你的API能接受一个标准的 JSON Web Token (JWT). 这个标准后面有多个库包(.NET, Ruby, Java, Python, PHP),许多公司支持(e.g. Firebase, Google, Microsoft). ,比如...
推荐几部不错的网络小说看,谢谢@!
1.《死灵法师》晴空一板砖:非常好的中篇魔法小说,在现在动不动就上百万字的时候,这种完美的中篇小说很不多见了 2《诺星汉天空》今何在:我读过的最好的传统魔幻小说,一直见网上见到有人推荐今何在的另一本书《悟空传》。却不见推荐这本书,不过我认为这本书更为成熟,《悟空传》就想一个学生,风华正茂,风流...
CPU AMD的盒装与散装的差距何在?多大?
如果价格差别不大 应该就没问题 最好带个放大镜 仔细看看logo是不是打磨在印上去的 如果不会也要带个放大镜 这样js就不会糊弄你 他会以为你是行家 其时建议卖盒装 散装的假货多 这么多种你自己看吧 http:\/\/detail.zol.com.cn\/price_search.php?subcatid=28&manuid=55 ...
柳顺银丹: SELECT * AS cnt FROM table_name WHERE ip = xxx.xxx.xxx.xxx signup_date > UNIX_TIMESTAMP(NOW() - INTERVAL 1 DAY))table_name 数据库表名ip ip地址存放字段名signup_date 注册日期(php中的time())得到cnt 然后只要cnt<=5就可以继续注册
张家港市13461435106: PHP 如何使一个IP一天只能投一次票啊 - ?
柳顺银丹: 当客户端请求的时候你就获取它的IP并获取当前的时候记录下来,下一次有客户端来请求就比对一下IP如果没有相同的IP就投票就加一,如果IP有相同的并与当前的时间差大于24小时,投票也加一,如果IP有相同的并且时间差小于24返回不能投票的原因.
张家港市13461435106: 如何在php上限制一个ip一天只能注册10个账户,注册多了不允许 - ?
柳顺银丹: 下面是伪代码$time1=date('Y-m-d',time());//假设你数据库是字符串存储时间$time1=strtotime($time1);//假设你数据库是时间戳存储时间$nums = select count(*) from table where ip='123' and registertime >='$time1' if($nums>=10){ die(); }
张家港市13461435106: 如何在PHP上限制一个IP一天只能注册5个帐号?
柳顺银丹: 时间格式用int型,您做起来就会简单的多,你只要做在一天凌晨到24点这个时间内,注册的个数<5就可以了! /** 客户端IP */ function getClientIp(){ if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_...
张家港市13461435106: 如何限制php页面一个用户一天只能访问一次 - ?
柳顺银丹: 这个很简单:1. 如果有登录系统,必须登录才能访问,新增个登录表记录登录时间,查表判断就好,或者访问时记录uid+时间到redis里面2. 如果没有登录,就以IP为uid+时间记录到redis 每次进页面查下redis里面是否存在该用户访问记录就可以了 这样的要代码,那就不好提供了,都是很基础的..建议加强基础
张家港市13461435106: 用php,要一个ip一天只能注册10个用户,那应该在注册页面添加什么语句呢,代码怎么写啊 - ?
柳顺银丹: 你的注册成功后的表中,需要有注册IP和注册时间字段,你在输入注册信息的页面,首先查询改IP今天注册的数量,如果大于10就拒绝注册.例如:$ip=getenv('REMOTE_ADDR');$day=date('Y-m-d');$sql="select count(*) from register where ip='...
张家港市13461435106: 请求一个实例:PHP 如何限制一个IP地址一天只能投3票? - ?
柳顺银丹: 很简单啊,用PHP+MySQL或者PHP+XML来做.将投过票的IP与时间写入数据库,每次投票前遍历数据库,发现24小时内数据库中已经有本IP3条记录了就在网页端禁止投票.很简单的,用不了几行语句就可以搞定.比如://前边遍历数据库或者XML语句不再给出,返回的一个值假定为 $a,它记录了数据库中同IP出现的次数.假定一个值为$b,它给出了时间差(24H).if ($a==3 and $b echo "您已经投了三次票,请明天再来"; }?>
张家港市13461435106: 怎样能使一个IP一天只能访问一次自己的网页.手把手的来,我现在没点头续 - ?
柳顺银丹: 这个一般都需要动态语言才能写得,具体看你会什么语言了??我拿php给你个思路....首先用php自带的常数获取访问者的IP,然后记录到数据库里或者文本文档,当然记录在数据库里更好,如果只是自己测试可以写到txt文档,然后如果是写到数据库里你可以在每个访问者访问网页的时候执行查询语句来匹配IP,如果已经有了就不可以访问,如果没有就记录并且可以访问,然后再数据库里记录访问的时间,然后检查时间是不是相差一个小时,这些都是很简单的 我记得我看看过一个php基础教程里就有这个,保证你看了就会 想到了我再来修改下找下教程的名字
张家港市13461435106: 请教:如何用PHP程序限制一个IP地址一天只能投票3次呢? - ?
柳顺银丹: 1、可以用MySQL 或者用Nosql记录 新建一个投票IP的数据表,字段是IP,投票次数;2、每次用户投票时,搜索表是否存在该IP: i、 如果不存在新增一条记录, ii、否则判断访问次数是否大于3次: 1) 没有更新访问次数; 2)大于3次就return false;3、弊端:当然这种情况不能避免使用代理来刷票的情况. 建议:用Nosql比较好,高并发,实时性好.
张家港市13461435106: php中怎么限制ip和时间 - ?
柳顺银丹: 给你一个示例代码,只是大概思路,你可以按需求修改一下1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21//开始时间 unix $min_time= 你自己定义时间戳; //结束时间 unix $max_time= 你自己定义时间戳; //允许访问的IP $ips= [ '127.0.0....