QQ咨询不加好友发不了信息,咨询前先加好友! → QQ:820896380

帝国cms反馈信息手机短信验证码功能

帝国CMS是基于B/S结构,安全、稳定、强大、灵活的网站管理系统.还提供了系统扩展框架。小编对这款系统还比较了解,今天就以增加手机登录为例为大家讲解一下如何进行二次开发,我们

帝国CMS是基于B/S结构,安全、稳定、强大、灵活的网站管理系统.还提供了系统扩展框架。小编对这款系统还比较了解,今天就以增加手机登录为例为大家讲解一下如何进行二次开发,我们今天讲解的是7.5版本,使用的短信接口是我们短信宝短信群发平台的短信接口,我们短信宝短信群发平台非常稳定,发送速度快,注册就送测试短信,推荐大家使用!
 

需求介绍:反馈表单新增手机验证码校验手机号的真假

首先打开项目:\e\tool\feedback\temp\feedback1.php 在29行左右新增手机验证页面

 

  1.   <tr>
  2.       <td width='16%' height=25 bgcolor='ffffff'><div align="right">联系电话:</div></td>
  3.       <td bgcolor='ffffff'><input name='mycall' id="phone" type='text' size='42'>
  4.         (*)</td>
  5.     </tr>
  6.       <tr>
  7.           <td width='16%' height="25" bgcolor="#FFFFFF"> <div align='right'>验证码</div></td>
  8.           <td height="25" bgcolor="#FFFFFF"> <input name='rzm' type='text' id='rzm' maxlength='30'>
  9.               *<input  type="button" style="font-size: 12px; height: 22px; line-height: 19px;" value="发送验证码" onclick="sendrzm()" id="sendag"  ></td>
  10.       </tr>

?在此文件58行左右新增JavaScript代码
 

  1.  <script src="/js/jquery.min-1.7.2.js"></script>
  2.     <SCRIPT language=javascript>
  3.         <!--
  4.         var secs = 60;
  5.         function sendrzm(){
  6.             var tel=$("#phone").val();
  7.             if($.trim(tel)==''||$.trim(tel).length!=11){
  8.                 alert('请填写正确的手机号码');
  9.             }else{
  10.                 $.getJSON('/e/member/doaction.php?enews=Backsend&phone=' + tel + '',
  11.                     function(data) {
  12.                        console.log(data);
  13.                         if(data.d=='2'){
  14.                             alert(data.n);
  15.                         }else{
  16.                             document.feedback.sendag.disabled=true;
  17.                             for(i=1;i<=secs;i++) {
  18.                                 window.setTimeout("update(" + i + ")", i * 1000);
  19.                             }
  20.                         }
  21.  
  22.  
  23.                     });
  24.             }
  25.         }
  26.         function update(num) {
  27.  
  28.  
  29.             if(num == secs) {
  30.                 document.feedback.sendag.value ="重新发送验证码";
  31.                 document.feedback.sendag.disabled=false;
  32.             }
  33.             else {
  34.                 printnr = secs-num;
  35.                 document.feedback.sendag.value = "(" + printnr +")重新发送验证码";
  36.             }
  37.         }
  38.         //-->
  39.     </SCRIPT>
  40. <? include("../../data/template/cp_2.php");?>

打开项目:\e\member\doaction.php 在194行左右新增反馈表单验证方法

 

  1. elseif ($enews=='Backsend')
  2. {
  3.     $tel=$_GET['phone'];
  4.     F_rzms($tel);
  5. }

打开项目:\e\class\q_functions.php 修改反馈信息的方法

 

  1. function AddFeedback($add){
  2.     global $empire,$dbtbpre,$level_r,$public_r;
  3.     CheckCanPostUrl();//验证来源
  4.     if($add['bid'])
  5.     {
  6.         $bid=(int)$add['bid'];
  7.     }
  8.     else
  9.     {
  10.         $bid=(int)getcvar('feedbackbid');
  11.     }
  12.     //验证手机验证码
  13.     $tel=$add['mycall'];
  14.     $rzm=$add['rzm'];
  15.     C_sjrs($tel,$rzm);
  16.     if(empty($bid))
  17.     {
  18.         printerror("EmptyFeedbackname","history.go(-1)",1);
  19.     }
  20.     //验证码
  21.     $keyvname='checkfeedbackkey';
  22.  
  23.  
  24.     if($public_r['fbkey_ok'])
  25.     {
  26.         ecmsCheckShowKey($keyvname,$add['key'],1);
  27.     }
  28.     //版面是否存在
  29.     $br=$empire->fetch1("select bid,enter,mustenter,filef,groupid,checkboxf from {$dbtbpre}enewsfeedbackclass where bid='$bid';");
  30.     if(empty($br['bid']))
  31.     {
  32.         printerror("EmptyFeedback","history.go(-1)",1);
  33.     }
  34.     //权限
  35.     $user=array();
  36.     if($br['groupid'])
  37.     {
  38.         $user=islogin();
  39.         if($level_r[$br[groupid]][level]>$level_r[$user[groupid]][level])
  40.         {
  41.             printerror("HaveNotEnLevel","history.go(-1)",1);
  42.         }
  43.     }
  44.     //实名验证
  45.     eCheckHaveTruename('fb',$user['userid'],$user['username'],$user['isern'],$user['checked'],0);
  46.  
  47.  
  48.     $pr=$empire->fetch1("select feedbacktfile,feedbackfilesize,feedbackfiletype from {$dbtbpre}enewspublic limit 1");
  49.     //必填项
  50.     $mustr=explode(",",$br['mustenter']);
  51.     $count=count($mustr);
  52.     for($i=1;$i<$count-1;$i++)
  53.     {
  54.         $mf=$mustr[$i];
  55.         if(strstr($br['filef'],",".$mf.","))//附件
  56.         {
  57.             if(!$pr['feedbacktfile'])
  58.             {
  59.                 printerror("NotOpenFBFile","",1);
  60.             }
  61.             if(!$_FILES[$mf]['name'])
  62.             {
  63.                 printerror("EmptyFeedbackname","",1);
  64.             }
  65.         }
  66.         else
  67.         {
  68.             $chmustval=ReturnFBCheckboxAddF($add[$mf],$mf,$br['checkboxf']);
  69.             if(!trim($chmustval))
  70.             {
  71.                 printerror("EmptyFeedbackname","",1);
  72.             }
  73.         }
  74.     }
  75.     $saytime=date("Y-m-d H:i:s");
  76.     //字段处理
  77.     $dh="";
  78.     $tranf="";
  79.     $record="<!--record-->";
  80.     $field="<!--field--->";
  81.     $er=explode($record,$br['enter']);
  82.     $count=count($er);
  83.     for($i=0;$i<$count-1;$i++)
  84.     {
  85.         $er1=explode($field,$er[$i]);
  86.         $f=$er1[1];
  87.         //附件
  88.         $add[$f]=str_replace('[!#@-','ecms',$add[$f]);
  89.         if(strstr($br['filef'],",".$f.","))
  90.         {
  91.             if($_FILES[$f]['name'])
  92.             {
  93.                 if(!$pr['feedbacktfile'])
  94.                 {
  95.                     printerror("NotOpenFBFile","",1);
  96.                 }
  97.                 $filetype=GetFiletype($_FILES[$f]['name']);//取得文件类型
  98.                 if(CheckSaveTranFiletype($filetype))
  99.                 {
  100.                     printerror("NotQTranFiletype","",1);
  101.                 }
  102.                 if(!strstr($pr['feedbackfiletype'],"|".$filetype."|"))
  103.                 {
  104.                     printerror("NotQTranFiletype","",1);
  105.                 }
  106.                 if($_FILES[$f]['size']>$pr['feedbackfilesize']*1024)//文件大小
  107.                 {
  108.                     printerror("TooBigQTranFile","",1);
  109.                 }
  110.                 $tranf.=$dh.$f;
  111.                 $dh=",";
  112.                 $fval="[!#@-".$f."-@!]";
  113.             }
  114.             else
  115.             {
  116.                 $fval="";
  117.             }
  118.         }
  119.         else
  120.         {
  121.             $add[$f]=ReturnFBCheckboxAddF($add[$f],$f,$br['checkboxf']);
  122.             $fval=$add[$f];
  123.         }
  124.         $addf.=",`".$f."`";
  125.         $addval.=",'".addslashes(RepPostStr($fval))."'";
  126.     }
  127.     $type=0;
  128.     $classid=0;
  129.     $filename='';
  130.     $filepath='';
  131.     $userid=(int)getcvar('mluserid');
  132.     $username=RepPostVar(getcvar('mlusername'));
  133.     $filepass=ReturnTranFilepass();
  134.     //上传附件
  135.     if($tranf)
  136.     {
  137.         $dh="";
  138.         $tranr=explode(",",$tranf);
  139.         $count=count($tranr);
  140.         for($i=0;$i<$count;$i++)
  141.         {
  142.             $tf=$tranr[$i];
  143.             $tfr=DoTranFile($_FILES[$tf]['tmp_name'],$_FILES[$tf]['name'],$_FILES[$tf]['type'],$_FILES[$tf]['size'],$classid);
  144.             if($tfr['tran'])
  145.             {
  146.                 $filepath=$tfr[filepath];
  147.                 //写入数据库
  148.                 $filetime=$saytime;
  149.                 $filesize=(int)$_FILES[$tf]['size'];
  150.                 eInsertFileTable($tfr[filename],$filesize,$tfr[filepath],'[Member]'.$username,$classid,'[FB]'.addslashes(RepPostStr($add[title])),$type,$filepass,$filepass,$public_r[fpath],0,4,0);
  151.                 $repfval=($tfr[filepath]?$tfr[filepath].'/':'').$tfr[filename];
  152.                 $filename.=$dh.$tfr[filename];
  153.                 $dh=",";
  154.             }
  155.             else
  156.             {
  157.                 $repfval="";
  158.             }
  159.             $addval=str_replace("[!#@-".$tf."-@!]",$repfval,$addval);
  160.         }
  161.     }
  162.     $filepath=dgdb_tosave($filepath);
  163.     $filename=dgdb_tosave($filename);
  164.     $ip=egetip();
  165.     $eipport=egetipport();
  166.     $sql=$empire->query("insert into {$dbtbpre}enewsfeedback(bid,saytime,ip,filepath,filename,userid,username,haveread,eipport".$addf.") values('$bid','$saytime','$ip','$filepath','$filename','$userid','$username',0,'$eipport'".$addval.");");
  167.     $fid=$empire->lastid();
  168.     //更新附件
  169.     UpdateTheFileOther(4,$fid,$filepass,'other');
  170.     ecmsEmptyShowKey($keyvname);//清空验证码
  171.     if($sql)
  172.     {
  173.         //有新的信息反馈时发送短信
  174.         require("../admin/smsbao/Smsbao.php");
  175.         //取出短信配置信息
  176.         $smsbao_config=file_get_contents("../admin/smsbao/config.txt");
  177.         $jiemi = encrypt($smsbao_config, 'D', 'a');
  178.         $smsbao_config=explode(",", $jiemi);
  179.         //取出商家手机号配置信息
  180.         $sms_shop_config1=file_get_contents("../admin/smsbao/shop.txt");
  181.         $smsbao=new Sms($smsbao_config[0],$smsbao_config[1]);
  182.         $mobiles=explode(',',trim($sms_shop_config1));
  183.         $mobiles=array_unique($mobiles);
  184.         $content="【".$smsbao_config[2]."】您好,收到来自".$add['title']."的信息反馈,请及时查看处理。";
  185.         foreach($mobiles as $key=>$val){
  186.             $sms_res=$smsbao->sendSms($val,$content);
  187.         }
  188.         //发送短信完毕
  189.         $reurl=DoingReturnUrl("../tool/feedback/?bid=$bid",$add['ecmsfrom']);
  190.         printerror("AddFeedbackSuccess",$reurl,1);
  191.     }
  192.     else
  193.     {printerror("DbError","history.go(-1)",1);}
  194. }  

打开项目:\e\class\connect.php 新增反馈手机验证码发送方法
 

  1. //反馈发送验证码
  2. function F_rzms($tel){
  3.     global $empire,$dbtbpre,$public_r;
  4.     $ism=is_mobile($tel);
  5.     if($ism == 2)
  6.     {
  7.         G_return("手机号码为空或者错误!");
  8.     }
  9.     $time=time();
  10.     //识别码
  11.     $gzwc=RepPostVar(getcvar('banksend'));
  12.     $zr=$empire->fetch1("select * from {$dbtbpre}rz where bsm='$gzwc' and sj='$tel'  limit 1");
  13.     if($zr['id']){
  14.         //验证次数
  15.         if($zr['c']>10)
  16.         {
  17.             G_return("该号码已多次接收不了验证码,建议更换手机重新注册!");
  18.         }
  19.         //验证间隔时间
  20.         $gtime2=$zr['t']+60*2;
  21.         if($time<$gtime2)
  22.         {
  23.             G_return("发送过程中,手机接收验证码需要1-2分钟,请耐心等待!");
  24.         }
  25.         $rm=no_make_password(6);
  26.         $content=$rm;
  27.         $fh=api_sendsms($tel,$content);
  28.         if($fh){
  29.             $sql=$empire->query("update {$dbtbpre}rz set t='$time',rzm='$rm',c=c+1 where id='$zr[id]'");
  30.             $logincookie=$time+3600*2;
  31.             $set1=esetcookie("gzwrz",$gzwc,$logincookie);
  32.             G_return("验证码已发送成功,请查收!",1);
  33.         }else{
  34.             G_return("发送失败,请联系管理员!");
  35.         }
  36.     }else{
  37.         $rm=no_make_password(6);
  38.         $content=$rm;
  39.         $fh=api_sendsms($tel,$content);
  40.         if($fh){
  41.             $gzwc=make_password(20);
  42.             $sql=$empire->query("insert into {$dbtbpre}rz(bsm,rzm,sj,t,c) values('$gzwc','$rm','$tel','$time','1');");
  43.             $logincookie=$time+3600*2;
  44.             $set1=esetcookie("banksend",$gzwc,$logincookie);
  45.             G_return("验证码已发送成功,请查收!",1);
  46.         }else{
  47.             G_return("发送失败,请联系管理员!");
  48.         }
  49.     }
  50. }

帝国cms反馈信息手机短信验证码功能 - 我爱模板网
好了经过以上的添加,短信宝反馈表单增加手机验证就已经安装成功,可以正常使用了

  1. 报备一下短信宝的VIP模板,这样就可以走短信宝的优质通道了,即便遇到敏感文字我们都不会人工审核,短信内容3~5秒就可送达。

 

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

请我们喝杯咖啡,谢谢^_^

给TA打赏
共0人
如本文“对您有用”,欢迎随意打赏,金额不重要,认可最重要!
    豆包可以帮你高效完成AI问答、AI对话、提供软件相关教程以及解决生活中遇到的各种疑难杂症,还能帮助你进行AI写作、AI绘画等等,提高你的工作学习效率。
    !
    你也想出现在这里?立即 联系我们吧!
    信息
    个人中心
    购物车
    优惠劵
    今日签到
    搜索