板邓:php实现手机短信验证注册功能—转

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

 

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

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

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

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

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

2、手机号码短信验证前台页面效果实现服务器

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">session

<html xmlns="http://www.w3.org/1999/xhtml">dom

<head>curl

    <title></title>

    <script src="js/jquery-1.4a2.min.js" type="text/javascript"></script>

              <script type="text/javascript">

                            /*-------------------------------------------*/

                            var InterValObj; //timer变量,控制时间

                            var count = 60; //间隔函数,1秒执行

                            var curCount;//当前剩余秒数

                            var code = ""; //验证码

                            var codeLength = 6;//验证码长度

                            function sendMessage() {

                                                 curCount = count;

                                                 var dealType; //验证方式

                            tel = $(’#tel’).val();

                  if(tel!=’’){

                       //验证手机有效性

                      var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/;

            if(!myreg.test($(’#tel’).val()))

          {

             alert(’请输入有效的手机号码!’);

             return false;

          }

                     tel = $(’#tel’).val();

                        //产生验证码

                            for (var i = 0; i < codeLength; i++) {

                                                        code += parseInt(Math.random() * 9).toString();

                                                 }

                                                 //设置button效果,开始计时

                                                        $("#btnSendCode").attr("disabled", "true");

                                                        $("#btnSendCode").val("请在" + curCount + "秒内输入验证码");

                                                        InterValObj = window.setInterval(SetRemainTime, 1000); //启动计时器,1秒执行一次

                            //向后台发送处理数据

                $.ajax({

                    type: "POST", //用POST方式传输

                    dataType: "text", //数据格式:JSON

                    url: ’yanzhengma.php’, //目标地址(根据实际地址)

                    data: "&tel=" + tel + "&code=" + code,

                    error: function (XMLHttpRequest, textStatus, errorThrown) { },

                    success: function (msg){ }

                });

                     }else{

                     alert(’请填写手机号码’);

                      }

           }

                            //timer处理函数

                     function SetRemainTime() {

                                   if (curCount == 0) {                

                                          window.clearInterval(InterValObj);//中止计时器

                                          $("#btnSendCode").removeAttr("disabled");//启用按钮

                                          $("#btnSendCode").val("从新发送验证码");

                                          code = ""; //清除验证码。若是不清除,过期间后,输入收到的验证码依然有效   

                                   }

                                   else {

                                          curCount--;

                                          $("#btnSendCode").val("请在" + curCount + "秒内输入验证码");

                                   }

                            }

    </script>

</head>

<body>

<input name="tel" id=tel type="text" />

        <input id="btnSendCode" type="button" value="发送验证码" onclick="sendMessage()" /></p>

</body>

</html>

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

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

<?php //提交短信

$post_data = array();

$post_data[’userid’] = 短信服务商提供ID;

$post_data[’account’] = ’短信服务商提供用户名’;

$post_data[’password’] = ’短信服务商提供密码’;

// Session保存路径

$sessSavePath = dirname(__FILE__)."/../data/sessions/";

if(is_writeable($sessSavePath) && is_readable($sessSavePath)){

       session_save_path($sessSavePath);

}

session_register(’mobliecode’);

$_SESSION[’mobilecode’] = $_POST["code"];

$content=’短信验证码:’.$_POST["code"].’【短信验证】’;

$post_data[’content’] = mb_convert_encoding($content,’utf-8’, ’gb2312’); //短信内容须要用urlencode编码下

$post_data[’mobile’] = $_POST["tel"];

$post_data[’sendtime’] = ’’; //不定时发送,值为0,定时发送,输入格式YYYYMMDDHHmmss的日期值

$url=’http://IP:8888/sms.aspx?action=send’;

$o=’’;

foreach ($post_data as $k=>$v)

{

  $o.="$k=".$v.’&’;

}

$post_data=substr($o,0,-1);

$ch = curl_init();

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_URL,$url);

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

//curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //若是须要将结果直接返回到变量里,那加上这句。

$result = curl_exec($ch);

?>

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

//手机验证码开始

        session_start();

              $svalitel = $_SESSION[’mobilecode’];

              $vdcodetel = empty($vdcodetel) ? ’’ : strtolower(trim($vdcodetel));

       

            if(strtolower($vdcodetel)!=$svalitel || $svalitel==’’)

            {

                ResetVdValue();

                            //echo "Pageviews=".$vdcodetel;

                            ShowMsg("手机验证码错误!", ’-1’);

                exit();

            }