美文网首页
php短信验证码60秒时间限定

php短信验证码60秒时间限定

作者: heheda1694 | 来源:发表于2018-11-22 15:50 被阅读0次

我们在实际使用短信验证码的时候,经常会因为各种原因,收不到短信,那么用户就会再重新请求一条,但是呢,一般的短信验证肯定是有时间间隔的,这样做,第一是为了防止恶意点击,一直发验证码,导致验证码消耗量巨大,二是担心心急的用户,两三秒没收到,就马上点了,这下可能一下子要来好几条,对用户来说也是一种困扰,所以我想分享一下我刚做的这个功能,是用的互亿无线的短信接口,因为毕竟简单,客服也不错的,蛮耐心。

好了,话不多说,现在送上代码

//接口类型:互亿无线触发短信接口,支持发送验证码短信、订单通知短信等。

// 账户注册:请通过该地址开通账户http://user.ihuyi.com/register.html

// 注意事项:

//(1)调试期间,请使用用系统默认的短信内容:您的验证码是:【变量】。请不要把验证码泄露给其他人。

//(2)请使用 APIID 及 APIKEY来调用接口,可在会员中心获取;

//(3)该代码仅供接入互亿无线短信接口参考使用,客户可根据实际需要自行编写;

//开启SESSION

session_start();

header("Content-type:text/html; charset=UTF-8");

//请求数据到短信接口,检查环境是否 开启 curl init。

function Post($curlPost,$url){

        $curl = curl_init();

        curl_setopt($curl, CURLOPT_URL, $url);

        curl_setopt($curl, CURLOPT_HEADER, false);

        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

        curl_setopt($curl, CURLOPT_NOBODY, true);

        curl_setopt($curl, CURLOPT_POST, true);

        curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);

        $return_str = curl_exec($curl);

        curl_close($curl);

        return $return_str;

}

//将 xml数据转换为数组格式。

function xml_to_array($xml){

    $reg = "/<(\w+)[^>]*>([\\x00-\\xFF]*)<\\/\\1>/";

    if(preg_match_all($reg, $xml, $matches)){

        $count = count($matches[0]);

        for($i = 0; $i < $count; $i++){

        $subxml= $matches[2][$i];

        $key = $matches[1][$i];

            if(preg_match( $reg, $subxml )){

                $arr[$key] = xml_to_array( $subxml );

            }else{

                $arr[$key] = $subxml;

            }

        }

    }

    return $arr;

}

//random() 函数返回随机整数。

function random($length = 6 , $numeric = 0) {

    PHP_VERSION < '4.2.0' && mt_srand((double)microtime() * 1000000);

    if($numeric) {

        $hash = sprintf('%0'.$length.'d', mt_rand(0, pow(10, $length) - 1));

    } else {

        $hash = '';

        $chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789abcdefghjkmnpqrstuvwxyz';

        $max = strlen($chars) - 1;

        for($i = 0; $i < $length; $i++) {

            $hash .= $chars[mt_rand(0, $max)];

        }

    }

    return $hash;

}

//短信接口地址

$target = "http://106.ihuyi.com/webservice/sms.php?method=Submit";

//获取手机号

$mobile = $_POST['mobile'];

//获取验证码

$send_code = $_POST['send_code'];

//生成的随机数

$mobile_code = random(4,1);

if(empty($mobile)){

    exit('手机号码不能为空');

}

//防用户恶意请求

if(empty($_SESSION['send_code']) or $send_code!=$_SESSION['send_code']){

    exit('请求超时,请刷新页面后重试');

}

$post_data = "account=用户名&password=密码&mobile=".$mobile."&content=".rawurlencode("您的验证码是:".$mobile_code."。请不要把验证码泄露给其他人。");

//查看用户名 登录用户中心->验证码通知短信>产品总览->API接口信息->APIID

//查看密码 登录用户中心->验证码通知短信>产品总览->API接口信息->APIKEY

$gets =  xml_to_array(Post($post_data, $target));

if($gets['SubmitResult']['code']==2){

    $_SESSION['mobile'] = $mobile;

    $_SESSION['mobile_code'] = $mobile_code;

}

echo $gets['SubmitResult']['msg'];

---------------------

作者:@互亿无线

来源:CSDN

原文:https://blog.csdn.net/weixin_43735367/article/details/84339861

版权声明:本文为博主原创文章,转载请附上博文链接!

相关文章

  • php短信验证码60秒时间限定

    我们在实际使用短信验证码的时候,经常会因为各种原因,收不到短信,那么用户就会再重新请求一条,但是呢,一般的短信验证...

  • PHP 短信验证码

    业务操作流程:输入手机号,发送验证码,收到验证码填写提交验证。常用于短信登录和手机号注册账号。 一、购买短信验证码...

  • 手机验证码

    本人所用短信验证码为容联云通讯 发送手机验证码 验证短信验证码是否有效 验证验证码时间是否过期

  • 生产力工具之云片短信平台-模板管理

    四步搞定短信验证码如何搞定短信验证码签名和模板如何使用云片API发送短信验证码Java实现短信验证码和国际短信群发...

  • 防止接口重放

    内容来源(公众号:PHP基础入门教程)在接口调用业务或生成业务数据环节中(如短信验证码、邮件验证码、订单生成、评论...

  • 短信API实现自动化短信发送

    短信验证码接口示例,如何接入短信API接口实现短信自动发送功能; 网站如何实现自动发送短信验证码的功能,短信验证码...

  • 接入短信API,免费试用

    短信验证码接口示例,如何接入短信API接口实现短信自动发送功能; 网站如何实现自动发送短信验证码的功能,短信验证码...

  • php发送短信验证码

    业务: 手机端点击发送验证码,请求发送到php端,由php调用第三方平台(我们使用的是榛子云短信http://sm...

  • 验证码类

    验证码类 captcha.class.php 生成验证码图片,验证码存入session imagecode.php...

  • Django项目用户注册功能(三)

    一、获取短信验证码 1.业务流程分析 校验手机号码 校验图形验证码 校验有效时间内有送记录 生成短信验证码 发送短...

网友评论

      本文标题:php短信验证码60秒时间限定

      本文链接:https://www.haomeiwen.com/subject/utotqqtx.html