如何實現php手機短信驗證功能

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

下載php源代碼php

  如今網站在建設網站時爲了保證用戶信息的真實性,每每會選擇發短信給用戶手機發驗證碼信息,只有經過驗證的用戶才能夠註冊,這樣保證了用戶的聯繫信息資料的100%的準確性 。今天筆者就跟你們分享一下如何實現php手機短信驗證功能,但願對你們有所幫助。html

 

 

第1、實現php手機短信驗證功能的基本思路java

一、要找到短信服務提供商,接入短信服務jquery

二、在網站信息提交頁面請求發送信息ajax

三、服務器向短信服務提供商通訊,提交發送請求服務器

四、短信服務提供商經過運營商將信息發送到用戶的手機中session

2、手機號碼短信驗證前臺頁面效果實現dom

  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 第3、調用短信服務器短信接口
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             }
相關文章
相關標籤/搜索