手机验证码

现在网站在建设网站时为了保证用户信息的真实性,往往会选择发短信给用户手机发验证码信息,只有通过验证的用户才可以注册,这样保证了用户的联系信息资料的100%的准确性 。今天笔者就跟大家分享一下如何实现php手机短信验证功能,希望对大家有所帮助。

如何实现php手机短信验证功能

第一、实现PHP手机短信验证功能的基本思路

1、要找到短信服务提供商,接入短信服务

2、在网站信息提交页面请求发送信息

3、服务器向短信服务提供商通信,提交发送请求

4、短信服务提供商通过运营商将信息发送到用户的手机中

二、手机号码短信验证前台页面效果实现

如何实现php手机短信验证功能

 
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2.   
  3. <html xmlns="http://www.w3.org/1999/xhtml">  
  4.   
  5. <head>  
  6.   
  7.     <title></title>  
  8.   
  9.     <script src="js/jquery-1.4a2.min.js" type="text/javascript"></script>  
  10.   
  11.               <script type="text/javascript">  
  12.   
  13.                             /*-------------------------------------------*/  
  14.   
  15.                             var InterValObj; //timer变量,控制时间  
  16.   
  17.                             var count = 60; //间隔函数,1秒执行  
  18.   
  19.                             var curCount;//当前剩余秒数  
  20.   
  21.                             var code = ""; //验证码  
  22.   
  23.                             var codeLength = 6;//验证码长度  
  24.   
  25.                             function sendMessage() {  
  26.   
  27.                                                  curCount = count;  
  28.   
  29.                                                  var dealType; //验证方式  
  30.   
  31.                             tel = $(’#tel’).val();  
  32.   
  33.                   if(tel!=’’){  
  34.   
  35.                        //验证手机有效性  
  36.   
  37.                       var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/;  
  38.   
  39.             if(!myreg.test($(’#tel’).val()))  
  40.   
  41.           {  
  42.   
  43.              alert(’请输入有效的手机号码!’);  
  44.   
  45.              return false;  
  46.   
  47.           }  
  48.   
  49.                      tel = $(’#tel’).val();  
  50.   
  51.                         //产生验证码  
  52.   
  53.                             for (var i = 0; i < codeLength; i++) {  
  54.   
  55.                                                         code += parseInt(Math.random() * 9).toString();  
  56.   
  57.                                                  }  
  58.   
  59.                                                  //设置button效果,开始计时  
  60.   
  61.                                                         $("#btnSendCode").attr("disabled", "true");  
  62.   
  63.                                                         $("#btnSendCode").val("请在" + curCount + "秒内输入验证码");  
  64.   
  65.                                                         InterValObj = window.setInterval(SetRemainTime, 1000); //启动计时器,1秒执行一次  
  66.   
  67.                             //向后台发送处理数据  
  68.   
  69.                 $.ajax({  
  70.   
  71.                     type: "POST", //用POST方式传输  
  72.   
  73.                     dataType: "text", //数据格式:JSON  
  74.   
  75.                     url: ’yanzhengma.php’, //目标地址(根据实际地址)  
  76.   
  77.                     data: "&tel=" + tel + "&code=" + code,  
  78.   
  79.                     error: function (XMLHttpRequest, textStatus, errorThrown) { },  
  80.   
  81.                     success: function (msg){ }  
  82.   
  83.                 });  
  84.   
  85.                      }else{  
  86.   
  87.                      alert(’请填写手机号码’);  
  88.   
  89.                       }  
  90.   
  91.            }  
  92.   
  93.                             //timer处理函数  
  94.   
  95.                      function SetRemainTime() {  
  96.   
  97.                                    if (curCount == 0) {                  
  98.   
  99.                                           window.clearInterval(InterValObj);//停止计时器  
  100.   
  101.                                           $("#btnSendCode").removeAttr("disabled");//启用按钮  
  102.   
  103.                                           $("#btnSendCode").val("重新发送验证码");  
  104.   
  105.                                           code = ""; //清除验证码。如果不清除,过时间后,输入收到的验证码依然有效     
  106.   
  107.                                    }  
  108.   
  109.                                    else {  
  110.   
  111.                                           curCount--;  
  112.   
  113.                                           $("#btnSendCode").val("请在" + curCount + "秒内输入验证码");  
  114.   
  115.                                    }  
  116.   
  117.                             }  
  118.   
  119.     </script>  
  120.   
  121. </head>  
  122.   
  123. <body>  
  124.   
  125. <input name="tel" id=tel type="text" />  
  126.   
  127.         <input id="btnSendCode" type="button" value="发送验证码" onclick="sendMessage()" /></p>  
  128.   
  129. </body>  
  130.   
  131. </html>  


第三、调用短信服务器短信接口

笔者整理的页面是yanzhengma.php(具体根据服务商提供信息)

 
  1. <?php //提交短信  
  2.   
  3. $post_data = array();  
  4.   
  5. $post_data[’userid’] = 短信服务商提供ID;  
  6.   
  7. $post_data[’account’] = ’短信服务商提供用户名’;  
  8.   
  9. $post_data[’password’] = ’短信服务商提供密码’;  
  10.   
  11. // Session保存路径  
  12.   
  13. $sessSavePath = dirname(__FILE__)."/../data/sessions/";  
  14.   
  15. if(is_writeable($sessSavePath) && is_readable($sessSavePath)){  
  16.   
  17.        session_save_path($sessSavePath);  
  18.   
  19. }  
  20.   
  21. session_register(’mobliecode’);  
  22.   
  23. $_SESSION[’mobilecode’] = $_POST["code"];  
  24.   
  25. $content=’短信验证码:’.$_POST["code"].’【短信验证】’;  
  26.   
  27. $post_data[’content’] = mb_convert_encoding($content,’utf-8’, ’gb2312’); //短信内容需要用urlencode编码下  
  28.   
  29. $post_data[’mobile’] = $_POST["tel"];  
  30.   
  31. $post_data[’sendtime’] = ’’; //不定时发送,值为0,定时发送,输入格式YYYYMMDDHHmmss的日期值  
  32.   
  33. $url=’http://IP:8888/sms.aspx?action=send’;  
  34.   
  35. $o=’’;  
  36.   
  37. foreach ($post_data as $k=>$v)  
  38.   
  39. {  
  40.   
  41.   $o.="$k=".$v.’&’;  
  42.   
  43. }  
  44.   
  45. $post_data=substr($o,0,-1);  
  46.   
  47. $ch = curl_init();  
  48.   
  49. curl_setopt($ch, CURLOPT_POST, 1);  
  50.   
  51. curl_setopt($ch, CURLOPT_HEADER, 0);  
  52.   
  53. curl_setopt($ch, CURLOPT_URL,$url);  
  54.   
  55. curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);  
  56.   
  57. //curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //如果需要将结果直接返回到变量里,那加上这句。  
  58.   
  59. $result = curl_exec($ch);  
  60.   
  61. ?>  


第四:提交表单信息时对短信验证码验证

  1. //手机验证码开始  
  2.   
  3.         session_start();  
  4.   
  5.               $svalitel = $_SESSION[’mobilecode’];  
  6.   
  7.               $vdcodetel = empty($vdcodetel) ? ’’ : strtolower(trim($vdcodetel));  
  8.   
  9.          
  10.   
  11.             if(strtolower($vdcodetel)!=$svalitel || $svalitel==’’)  
  12.   
  13.             {  
  14.   
  15.                 ResetVdValue();  
  16.   
  17.                             //echo "Pageviews=".$vdcodetel;  
  18.   
  19.                             ShowMsg("手机验证码错误!", ’-1’);  
  20.   
  21.                 exit();  
  22.   
  23.             }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值