手机短信验证码是什么?

如题所述

手机短信验证码是通过发送验证码到手机的一种有效的验证码。无论是大型网站尤其是购物网站,都提供有手机短信验证码功能,可以比较准确和安全地保证购物的安全性,验证用户的正确性。

短信验证码实际上是一种由具有一定技术开发能力的企业用户开发的企业短信传输程序。通过短信验证码平台和系统软件之间的接口,企业可以向员工、供应商和合作伙伴发送各种类型的信息。手机之间,以实现信息通报。常见的应用是网站和内部办公系统。除了短信,他们还支持定制的修改。可根据客户需求扩大功能,进行二次开发。

某些验证码接入商提供手机短信验证码服务,各网站通过接口发送请求到接入商的服务器,服务器发送随机数字或字母到手机中,由接入商的服务器统一做验证码的验证。

短信接口一般支持http和webservice调用。程序员在需要发送短信的地方添加接口地址和相关参数,如接收端手机号码、接收的内容以及其他接口参数,调用完就会返回xml数据,表示成功提交或者失败。关于回复短信,会绑定到一个接收回复内容的地址,有短信回复过来就推送到对应地址。

扩展资料:

对于企业来说,在有了短信之后,可以随时发送一些企业想要发送的信息,如工厂宣传信息、产品促销信息、公司信息和合作伙伴之间的合作信息、节日问候等。这可以大大降低维护客户的成本,减少运营时间和能源投入。同时,短信传输的及时性和便利性也保证了通信的畅通,提高了工作效率

常见的短信验证码格式,短信验证码格式:【短信签名】+内容;网站/APP实现短信验证功能的流程,按照一般的注册要求,用户需要填写用户名、密码、邮箱等相关信息后,接下来会提示输入手机号码。

输入手机号码后,用户将收到的短信验证码填写到网站,网站对用户填写的验证码进行校验,如果一致,说明用户填写的手机号码是正确的,否则验证失败。

参考资料来源:百度百科—短信验证码

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-09-13

关于手机短信接收验证码的实现原理:
思路:
A:获得验证码:
1.找到相关的表。
2.用什么发送,post,get ,ajax,当然ajax首选
3.post之前要js先判断是手机号码11位,并且全部都是数字,或者用正则也行。
4.用ajax发送数据data,要对数据进行检验,过滤有效数据valid 
5.insert前要先判断这手机是否验证过了,已经验证过就return false;没验证过则把随机生成的6位验证码insert 数据库表中。
6.通过提供给你api写好调用,把验证码跟msg通过ajax返回值发送给向客户,并用js做一个倒计时计数器.

B:接收验证码,提交表单:
1.接收post过来数据,把验证码跟跟刚才插入数据库中的6位key进行比较。如果相等,则说明是最后一次发送的验证码才有效。
2.对数据库insert 操作.最少要做个认证tag标志.

<!--手机认证 Begin-->
<div style="display: block;" class="auth_ck_detail" id="auth_ck_phone">
<div class="item_title item_margin"><p>手机认证</p><span class="shadow"></span></div>
<form name="myform" id="myform" action="http://www.hnb.cc/jiaoyou/usercp.php?c=certify&amp;a=rzmobile" method="post">
<table class="user-table table-margin lh35" border="0" cellpadding="0" cellspacing="0" width="98%">
<tbody>
<tr>
<td class="lblock" width="15%">您的手机号码:</td>
<td class="rblock" width="85%">

<input name="mobile" id="mobile" value="" class="input-150" type="text" style="width:130px;"> &nbsp;&nbsp;

<input name="btn_downtime" id="btn_downtime" value="免费获取验证码" style="height: 25px; background:#F5487A; color:#fff; padding-left: 2px; padding-right: 5px; width:175px;" class="button-green-b" type="button"> <span id="tips_mobile"></span>

<br>
<div class="mb-verifycode" style=" width:320px; background:#FFDD55;margin-top:10px; color:#666666; padding-left:10px; padding-bottom:5px;" >
<p style="font-size:13px;">输入以下图片校验码才可以获取手机验证码</p>
<dl style=" float:left;">
<dt style=" float:left;">校验码:</dt>
<dd style=" float:left;   "><input  style="width:100px; " value="" name="mbverifycode" id="mbverifycode" maxlength="6" type="text"> <img id="verifycode-img" src="#" style="vertical-align: middle;"> <span id="btn_mbverifycode" >换一个</span></dd>
<div style="clear: both;"></div>
</dl>
<div style="clear: both;"></div>
</div>

</td>
</tr>
<tr>

<td class="lblock">收到的验证码:</td>
<td class="rblock"><input value="" name="checkcode" id="checkcode" class="input-s" type="text"> <font color="#df4070">(输入您手机收到的验证码)</font></td>
</tr>
<tr>
<td class="lblock" height="40"></td>
<td class="rblock"><input value="提交验证" onclick="return checkrzmobile();" class="button-gray" type="button"></td>
</tr>
</tbody>
</table>
</form>

<table class="user-table table-margin lh25" border="0" cellpadding="0" cellspacing="0" width="98%">
<tbody><tr>
<td>
为什么要进行手机认证?<br>
1、认证通过后可在您的资料页点亮手机认证图标,提高你的诚信等级;<br>
2、接收来自网站和会员发送的手机短信。<br>
</td>
</tr>
</tbody></table>

<script type="text/javascript">
//处理手机验证码        $("#verifycode-img").attr("src", "/jiaoyou/source/include/imagecode.php?act=verifycode&t_code="+(new Date()).getTime());
$(function()
{
$("#btn_mbverifycode").click(function()
{

$("#verifycode-img").attr("src", "/jiaoyou/source/include/imagecode.php?act=verifycode&t_code="+(new Date()).getTime());                    return false;

});



$("#btn_downtime").click(function()
{ //获取手机验证码
var tips = $("#tips_mobile");                var args_mobile = $("#mobile").val();                var args_mbverifycode = $("#mbverifycode").val();                if (!isMobile(args_mobile))
{
tips.html('请填写正确的手机号码');                    return false;
}

$.ajax({
type: 'POST',                    //jiaoyou/index.php?c=ajax&a=checkregmobile
// url:"/jiaoyou/index.php?c=ajax",                    url:"/jiaoyou/usercp.php?c=certify",
cache: false,
data: {a:"checkregmobile", mobile: args_mobile, verifycode:args_mbverifycode, r: get_rndnum(8)},
dataType: 'json',

success: function(data)
{                        var json = eval(data);                        var response = json.response;                        var result = json.msg;                        // alert(json.response);

if (response == "1")
{

initGetDownTime('mobile', 'btn_downtime');/*时间倒计时*/
tips.html("<font color='green'>验证码发送成功,请注意查收。</font>");
}                        else
{
if (result.length > 0)
{
tips.html("<font color='red'>"+result+"</font>");
}                            else
{
tips.html("<font color='red'>发送失败,请检查手机号。</font>");
}
}
},

error: function()
{
tips.html("<font color='red'>请求错误</font>");
}
});

});
});        /*----------------- 倒计时 start ----------------*/
var init_down_time = 60;        var init_intervalDownTimeObj;        /**
* 倒计时
* @param:: string mbinput
*/
function initGetDownTime(mbinput, btnobj) {            var mb = $("#"+mbinput).val();            if (isMobile(mb)) {
init_intervalDownTimeObj = setInterval("countDownTime('"+btnobj+"')", 1000);
}
}        function countDownTime(btn) {
$('#'+btn).attr("disabled", "true");
$('#'+btn).val(""+init_down_time+"秒后没收到短信重新发送");
init_down_time--;            if (init_down_time == 0){
clearInterval(init_intervalDownTimeObj); //停止时间                $('#'+btn).removeAttr("disabled");
$('#'+btn).val("重新发送");
init_down_time = 60;
}
}        /*----------------- 倒计时 end ----------------*/
</script>

</div>
<!--//手机认证 End-->

下面php接收ajax接收方法:

/*hnb新增加的手机接收验证方法*/
public function control_checkregmobile( )
{        $response = 0;        $mobile = XRequest::getArgs('mobile');/*得到手机号  这个跟$_post接收数据是一样的*/
$checkcode = XRequest::getArgs('verifycode');/*得到验证码这个跟$_post接收数据是一样的*/

if (!empty($checkcode))
{
parent::loadUtil('session');            $nowcode = XSession::get('verifycode');            if ($checkcode!== $nowcode)
{                echo json_encode(array('response' => $response,'msg'=>'您的校验码有误!'));exit;
}
}else
{            echo json_encode(array('response' => $response,'msg'=>'您的校验码有误!'));exit;
}


$model = parent::model('user','am');        $target = "http://api.bjszrk.com/sdk/BatchSend.aspx"; /*接口url*/

if (true === $model->doExistsMobile($mobile)) /*检测手机是否已经验证*/
{            $response = 2;            $msg='对不起,您的手机号码已经通过验证,请不要重复操作!';
}else
{            $model_certify = parent::model('certify', 'um');            list($mbcode, $error) = $model_certify->GetMobileCode($mobile); /*生成一个随机数及插入数据*/
$content="您的验证码是:".$mbcode."。欢迎注册我主良缘交友网,请勿将验证码告知他人!";            $msg=$model->postMbCode($mobile, $content);   /*调用post给api接口方法*/
$response = 1;            $msg='验证码已发送成功,请注意查收!';
}        echo json_encode(array('response'=>$response,'msg'=>$msg));
}

测手机是否已经验证过的doExistsMobile方法如下:

public function doExistsMobile($mobile)
{        $res = false;        $sql = 'SELECT `userid` FROM ' . DB_PREFIX . 'user_attr' . " WHERE `mobile`='{$mobile}'";        $rows = parent::$obj->fetch_first($sql);        if (!empty($rows)) {            $res = true;
}
unset($sql, $rows);        return $res;
}

/*GetMobileCode方法具体实现如下:*/


/*r把随机得到的6位验证码insert到数据库表中*/
   public function GetMobileCode($mobile)
   {        $result = 0;        $message = null;        $checkcode = XHandle::getRndChar(6, 1);        $userid=parent::$wrap_user['userid'];        $sql="update user_status set mobilesalt='$checkcode' where userid='$userid'";
       parent::$obj->query($sql);        $result = 1;        $sql = (('SELECT * FROM ' . DB_PREFIX) . 'mobile_checkcode') . " WHERE `mobile`='{$mobile}'";        $rows = parent::$obj->fetch_first($sql);        if (!empty($rows)) {            $array = array('checkcode' => $checkcode, 'updatetime' => time());
           parent::$obj->update(DB_PREFIX . 'mobile_checkcode', $array, ('`id`=\'' . $rows['id']) . '\'');
       } else {            $id = parent::$obj->fetch_newid(('SELECT MAX(id) FROM ' . DB_PREFIX) . 'mobile_checkcode', 1);            $array = array('id' => $id, 'mobile' => $mobile, 'checkcode' => $checkcode, 'createtime' => time());
           parent::$obj->insert(DB_PREFIX . 'mobile_checkcode', $array);
       }        unset($sql);        unset($rows);        
       return array($checkcode, $message);
   }

B:

下面是得到了验证码Form表单点提交php的方法.

submit提交    */    public function control_rzmobile( )
{        $service = parent::service( "certify", "us" );/*接收数据,验证手机格式及号码*/
list( $mobile, $salt ) = $service->validRzMobile( );/*salt 为手机验证码*/
unset( $service );
$model = parent::model( "certify", "um" );        $result = $model->doValidMobile( $mobile, $salt );  /*调用model三张表进行数据操作*/
unset( $model );        if ( TRUE === $result )
{
if ( $this->halttype == "jdbox" )
{
XHandle::jqdialog( "手机号码验证成功", 1 );
}            else
{
XHandle::halt( "手机号码验证成功", $this->ucfile."?c=certify", 0 );
}
}        else
{
XHandle::halt( "手机号码验证失败", "", 1 );
}
}

上面dovalidmobile函数方法具体实现:

/*手机认证提交 分别在三个表里操作对象*/
public function doValidMobile( $mobile, $validkey )
{        $result = FALSE;        $sql = "SELECT userid FROM ".DB_PREFIX.( "user_status WHERE mobilesalt='".$validkey."' AND userid='" ).parent::$wrap_user['userid']."'";        //SELECT userid FROM user_status WHERE mobilesalt='5522' AND userid='209367'
$rows = parent::$obj->fetch_first( $sql );
if ( !empty( $rows ) )
{            $status_array = array(                "mobilerz" => 1,
"mobilesalt" => XHandle::getrndchar( 6, 1 )
);            // print_r($status_array);exit;
parent::$obj->update( DB_PREFIX."user_status", $status_array, "userid='".parent::$wrap_user['userid']."'" );            $attr_array = array(                "mobile" => $mobile
);
parent::$obj->update( DB_PREFIX."user_attr", $attr_array, "userid='".parent::$wrap_user['userid']."'" );
parent::loadlib( "user" );            $star = XUser::updatestar( parent::$wrap_user['userid'] );  /*加星为user_status表里设置star星级*/
$result = TRUE;            if ( TRUE === $result )
{                $m_indexs = parent::model( "indexs", "am" );  /*作用在user_params表里加上论证标志,可能是用户左边栏加上星标志*/
$m_indexs->updateIndexs( parent::$wrap_user['userid'], array(                    "rzmobile" => 1,
"star" => $star
) );                unset( $m_indexs );
}
}        return $result;
}

第2个回答  2018-10-30

手机短信验证是企业给消费者(用户)的一个凭证,通过手机短信内容的验证码来验证身份。目前使用的最普遍的有各大银行网上银行、网上商城、团购网站、票务公司等。手机短信验证利用短信验证码来注册会员,大大降低了非法注册,烂注册的数据。

扩展资料:

短信验证码应用场景

1.用户登录

用户在使用手机号码快速登陆网站或APP时,发送验证码到用户手机,完成注册用户身份确认,顺利快捷登陆。

2.用户注册

用户注册时通过手机号码验证用户真实身份,杜绝恶意注册,确保用户有效性。

3.忘记密码

用户在忘记密码的情况下,通过验证码发送到用户注册时使用的手机号码,完成身份确认,完成修改新的密码。

4.信息变更

如变更手机号码、修改账户信息、修改产品信息时,需要进行手机身份验证,以保障账户信息安全。

5.身份确认

资金相关重要环节,如确认支付、快捷支付、确认收货等资金转移环节中,需要手机身份验证,确保资金安全。

6.登录异常

系统发现登录异常(异地IP、密码输入错误)自动升级安全策略,需要进行手机身份验证,以保障账户信息安全。

参考资料:手机短信认证-百度百科

第3个回答  2019-04-15
像身份验证一样,看是不是本人在操作这个事情,
比如,本人申请了某网银,现在要在网上支付一笔钱出去,当时申请网银时留的某手机号,支付时需要手机验证码,(点击获取手机验证码) 这时候银行就会发一个验证码到那个号的手机上,看看是不是本人在操作这笔交易,(验证码通常都是在当时规定的时间内有效的)如果没有或者不是本人,那这笔交易就不会成功。当然了,手机验证码不要泄露出去,让不法分子利用了。
手机短信验证码是登陆办理具有隐私性的网站或者网上银行登陆时,系统自动发给你绑定手机的一个六位数号码(或者四到五们的字母组合),你可以通过输入数据后系统验证正确后方可登陆和办理的组合码,通过这个验证码可以保护使用者隐私和帐户安全行之有效的方法。
总之手机验证码一定不能泄露给别人。
第4个回答  2019-02-25
短信验证码是通过发送验证码到手机的一种有效的验证码短信。
短信验证码作为一种最主流,也是最便捷的产品使用方式,短信验证码的应用场景多种多样,用户的接受度一般也比较高。
1用户注册
用户注册账号时,需要进行手机验证。用户输入手机号码并点击“下一步”或“获取验证码”即可在几秒钟内收到短信验证码,输入短信验证码并验证通过后,继续进行下一步操作。

2安全登录
用户在使用手机号码快速登陆网站或APP时,输入手机号并点击“下一步”或“获取验证码”,几秒钟即可发送验证码到用户手机,完成注册用户身份确认,顺利快捷登陆。

3密码修改
用户在忘记密码的情况下,通过输入手机号,将验证码发送到用户注册时使用的手机号码,完成身份确认,完成修改新的密码。

4信息变更
用户在忘记密码的情况下,通过输入手机号,将验证码发送到用户注册时使用的手机号码,完成身份确认,完成修改新的密码。
5支付验证
用户在支付资金等相关重要环节,如确认支付、快捷支付、确认收货等资金转移环节中,需要手机身份验证时,通过输入手机号获取短信验证码,确保资金安全。
相似回答