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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实现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="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>
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手机短信验证功能的主要内容,如果未能解决你的问题,请参考以下文章

php5.2版本如何成功调用腾讯云短信API,实现短信发送功能

PHP如何实现指纹验证,求大神指导

html PHP代码片段: - AJAX基本示例:此代码演示了使用PHP和JavaScript实现的基本AJAX功能。

源码分享短信验证码如何实现微米CMS

php实现短信验证

java如何实现发送短信验证码功能?