200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 基于PHP实现短信验证码发送次数限制解析

基于PHP实现短信验证码发送次数限制解析

时间:2023-09-30 04:48:35

相关推荐

基于PHP实现短信验证码发送次数限制解析

后端开发|php教程

PHP,短信验证码,发送,限制

后端开发-php教程

源码wap,安卓vscode安装教程,ubuntu 启动菜单,tomcat 连接池参数,sqlite 阿里,网页设计开发软件中,php excel 导入数据库,访问网站人多的时候很慢是服务器问题还是带宽,插件商城,前端portal框架,江滩爬虫馆,php opcode,烟台招聘seo,跨域springboot,dede列表页标签调用,asp如何制作网站,网页新窗口,blog html模板,aspcms后台使用教程,页面背景自动连线特效,人事管理系统 页面 代码,监控应用程序源码lzw

对用户获取短信验证码的手机号、ip、和浏览器(使用唯一标识)进行限制。本文介绍的方法是对用户每天只能通过同一浏览器或同一ip地址获取验证码10次或者同一手机号只能获取3次短信验证码,三种限制为“或”关系,一条超限就不发验证码。方法是通过在服务器端将用户的手机号、ipur_r记录并写入文件,再通过读取文件记录判断用户请求发送验证码的次数来做限制。方法如下:

外贸网站源码,venue刷ubuntu,tomcat双击打不开,滚球 python爬虫,php开发人员要求,seo2属于分子晶体吗lzw

获取短信验证码页面:

大前端工具箱源码,vscode如何使用进行判断,ubuntu 火狐安装,指令关闭tomcat,c sqlite 教程,网页设计简单, 还原数据库,无法访问服务器上网站,淘宝密码安全插件,phrase前端框架,游戏客户爬虫,php 日志类,儋州seo,springboot导入源码,企业网站在线超市,网页挖矿源码,模板王购物模板,phpwind后台登陆,mfc计算器页面,成绩管理系统功能模块,程序网站源码下载lzw

/*使用js获取cookie中ur_r唯一标识,如果不存在,生成唯一标识,js写入cookie,并将唯一标识赋给隐藏表单。*/ //唯一标识存入cookie var _uuid = getUUID(); if(getCookie("_UUID_UV")!=null && getCookie("_UUID_UV")!=undefined) {_uuid = getCookie("_UUID_UV"); }else{setCookie("_UUID_UV",_uuid); } document.getElementById("uv_r").value = _uuid;//赋给hidden表单 //生成唯一标识 function getUUID() {var uuid = new Date().getTime();var randomNum =parseInt(Math.random()*1000);return uuid+randomNum.toString(); } //写cookie function setCookie(name,value) {var Days = 365;//这里设置cookie存在时间为一年var exp = new Date();exp.setTime(exp.getTime() + Days*24*60*60*1000);document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString(); } //获取cookie function getCookie(name) {var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");if(arr=document.cookie.match(reg)) return unescape(arr[2]);else return null; }

后端PHP处理代码:

Root = APP_PATH."/data/msg_logs/";//自己定义的文件存放位置}//获取短信验证码操作(Ajax方法为好)Public function get_authentication_code(){if ($_POST[uv_r] && $_POST[ el]) {$ip=$_SERVER["REMOTE_ADDR"];//ip $tel = $_POST[ el];//电话 $uv_r = $_POST[uv_r];//ur_r标识 if(empty($uv_r)){ $uv_r = 0; }}//判断数据是否超过了限制$uvr_num = $this->checkUvr($uv_r);$tel_num = $this->checkTel($tel);$ip_num = $this->checkIp($ip);if ($uvr_num < 10 && $tel_num < 4 && $ip_num 0 && $uvr_num >= 10) { $data = $data . "A@"; } if ($tel_num >= 4) { $data = $data . "B@"; } if ($ip_num >= 10) { $data = $data . "C@"; } $this->wirteFile("", $data); $this->ajax_return(0, "您今日获取短信验证码的次数过多!");//给用户返回信息,ajax_return()为自写方法(未提供) }}//以下方法为私有方法//检测ur_r在文件中出现的次数Private function checkUvr($data){ $fileName = "Uv_".date("Ymd",time()).".dat"; $filePath = ($this -> Root).$fileName;//组装要写入的文件的路径 $c_sum = 0; if(file_exists($filePath)){//文件存在获取次数并将此次请求的数据写入 $arr=file_get_contents($filePath); $row=explode("|",$arr); $countArr=array_count_values($row); $c_sum = $countArr[$data]; if($c_sum wirteFile($filePath,$data."|"); } return $c_sum; }else{//文件不存在创建文件并写入本次数据,返回次数0 $this -> wirteFile($filePath,$data."|"); return $c_sum; }}//检测Tel在文件中出现的次数Private function checkTel($data){ $fileName = "Tel_".date("Ymd",time()).".dat"; $filePath = ($this -> Root).$fileName; $c_sum = 0; if(file_exists($filePath)){ $arr=file_get_contents($filePath); $row=explode("|",$arr); $countArr=array_count_values($row); $c_sum = $countArr[$data]; if($c_sum wirteFile($filePath,$data."|"); } return $c_sum; }else{ $this -> wirteFile($filePath,$data."|"); return $c_sum; }}//检测IP在文件中存在的次数Private function checkIp($data){ $fileName = "Ip_".date("Ymd",time()).".dat"; $filePath = ($this -> Root).$fileName; $c_sum = 0; if(file_exists($filePath)){ $arr=file_get_contents($filePath); $row=explode("|",$arr); $countArr=array_count_values($row); $c_sum = $countArr[$data]; if($c_sum wirteFile($filePath,$data."|"); } return $c_sum; }else{ $this -> wirteFile($filePath,$data."|"); return $c_sum; }}/*** 将数据写入本地文件* @param $filePath 要写入文件的路径* @param $data 写入的数据*/Private function wirteFile($filePath,$data){try { if(!is_dir($this->Root)){//判断文件所在目录是否存在,不存在就创建mkdir($this->Root, 0777, true); } if($filePath==""){//此处是不发送验证码时,记录日志创建的文件$filePath = ($this -> Root)."N".date("Ymd",time()).".dat"; }//写入文件操作 $fp=fopen($filePath,"a+");//得到指针 fwrite($fp,$data);//写 fclose($fp);//关闭 } catch (Exception $e) { print $e->getMessage(); }}}?>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。