首页 > 代码库 > 如何实现php手机短信验证功能

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

http://www.qdexun.cn/jsp/news/shownews.do?method=GetqtnewsdetailAction&id=1677

下载php源代码

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

 技术分享

 

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

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

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

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

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

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

技术分享

  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="http://www.mamicode.com/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="http://www.mamicode.com/发送验证码" onclick="sendMessage()" /></p>128 129 </body>130 131 </html>132 133 第三、调用短信服务器短信接口134 135 笔者整理的页面是yanzhengma.php(具体根据服务商提供信息)136 137 <?php //提交短信 138 139 $post_data = array(); 140 141 $post_data[’userid’] = 短信服务商提供ID; 142 143 $post_data[’account’] = ’短信服务商提供用户名’; 144 145 $post_data[’password’] = ’短信服务商提供密码’; 146 147 // Session保存路径148 149 $sessSavePath = dirname(__FILE__)."/../data/sessions/";150 151 if(is_writeable($sessSavePath) && is_readable($sessSavePath)){ 152 153        session_save_path($sessSavePath);154 155 }156 157 session_register(’mobliecode’);158 159 $_SESSION[’mobilecode’] = $_POST["code"];160 161 $content=’短信验证码:’.$_POST["code"].’【短信验证】’;162 163 $post_data[’content’] = mb_convert_encoding($content,’utf-8’, ’gb2312’); //短信内容需要用urlencode编码下 164 165 $post_data[’mobile’] = $_POST["tel"]; 166 167 $post_data[’sendtime’] = ’’; //不定时发送,值为0,定时发送,输入格式YYYYMMDDHHmmss的日期值 168 169 $url=’http://IP:8888/sms.aspx?action=send’; 170 171 $o=’’; 172 173 foreach ($post_data as $k=>$v) 174 175 { 176 177   $o.="$k=".$v.’&’; 178 179 } 180 181 $post_data=substr($o,0,-1); 182 183 $ch = curl_init(); 184 185 curl_setopt($ch, CURLOPT_POST, 1); 186 187 curl_setopt($ch, CURLOPT_HEADER, 0); 188 189 curl_setopt($ch, CURLOPT_URL,$url); 190 191 curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); 192 193 //curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //如果需要将结果直接返回到变量里,那加上这句。 194 195 $result = curl_exec($ch); 196 197 ?>198 199 第四:提交表单信息时对短信验证码验证200 201 //手机验证码开始202 203         session_start();204 205               $svalitel = $_SESSION[’mobilecode’];206 207               $vdcodetel = empty($vdcodetel) ? ’’ : strtolower(trim($vdcodetel));208 209         210 211             if(strtolower($vdcodetel)!=$svalitel || $svalitel==’’)212 213             {214 215                 ResetVdValue();216 217                             //echo "Pageviews=".$vdcodetel;218 219                             ShowMsg("手机验证码错误!", ’-1’);220 221                 exit();222 223             }

 

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