PHP 短信验证码功能

现在网站在建设网站时为了保证用户信息的真实性,往往会选择发短信给用户手机发验证码信息,只有通过验证的用户才可以注册,这样既保证了用户的联系信息资料的100%的准确性,也为用户提供了一种最方便快捷的注册方式 。

那么我们今天就来说一下 短信发送原理, 如下图

工作开发流程:
 第一、实现php手机短信验证功能的基本思路

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

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

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

4、短信服务提供商通过运营商将信息发送到用户的手机中
第二 :手机号码短信验证前台页面效果实现

<!DOCTYPE html>
<html lang="en">
<head>
    <title>郑州传智播客</title>
    <meta charset="UTF-8">
    <meta name="Author" content="PHP就业老师"/>
<style type="text/css">
    *{margin:0;padding:0;}
</style>
    <script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>
    <script type="text/javascript">

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

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

        var curCount;//当前剩余秒数

        function codeRandom(chars) {
            var res="";
            for(var i=0;i<chars;i++){
                res += Math.floor(Math.random()*10);
            }
           return res;
        }

        //timer处理函数

        function SetRemainTime() {

            if (curCount == 0) {

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

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

                $("#sub").val("重新发送验证码");

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

            }
            else {
                curCount--;
                $("#sub").val("请在" + curCount + "秒内输入验证码");
            }

        }
        //获取手机号码
  $(function () {
    $("#sub").click(function () {
        var phone=$("#phone").val(); //获取手机号码
        curCount = count;
        if(phone!=‘‘){

            //验证手机有效性

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

            if(!myreg.test($(‘#phone‘).val()))

            {

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

                return false;

            }

            phone = $(‘#phone‘).val();

        //验证码(随机生成)
        var code= codeRandom(4);
            //设置button效果,开始计时

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

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

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

      //发送数据到后台 通过Ajax
        $.ajax({
            //设置的参数
            type: "post",
            url: "data.php",
            data:{"code":code,"phone":phone},
            success:function (msg) {
                alert(msg);
            }
        });}else{
            alert(‘请填写手机号码‘);

        }
    });
  });
    </script>
</head>
<body>
<h1>PHP-短信验证码</h1>
手机验证码:<input type="text" name="phone" id="phone">
<input id="sub" type="button" value="发送验证码" />
</body>
</html>

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

<?php
/**
 * Created by PhpStorm.
 * User: Leo
 * Date: 2017/8/30
 * Time: 14:59
 */

//$_post
$phone= isset($_POST[‘phone‘])?$_POST[‘phone‘]:‘‘;
$code = isset($_POST[‘code‘])?$_POST[‘code‘]:‘‘;
require (dirname(__FILE__).‘/config.php‘);
require (dirname(__FILE__).‘/SendSMS.php‘);

//实例化短信发送类
$sms= new  SendSMS($options[‘account‘],$options[‘password‘]);
$context=‘验证码‘.$code;
$res=$sms->send($phone,$context);
if ($res){
   echo "成功";
}else{
    echo "失败";
}

因为我们为了代码的优雅,把代码分开来写. 方便以后重复使用.所以把发送短息具体封装了一个类.具体看代码:

<?php
/**
 * Created by PhpStorm.
 * User: Leo
 * Date: 2017/8/30
 * Time: 15:26
 */
/**
 * 设置用户信息
 */
class SendSMS{
 const SENDURL=‘http://gd.ums86.com:8899/sms/Api/Send.do‘;
    private $_un;
    private $_pw;

    function __construct($user,$pwd){
        $this->_un=$user;
        $this->_pw=$pwd;
    }

    function send($phone,$content,$isreport=0){
        //发送数据
        $data=array(
            ‘un‘=>$this->_un,
            ‘pw‘=>$this->_pw,
            ‘sm‘=>$content,
            ‘da‘=>$phone,
            ‘rd‘=>$isreport,
            ‘rf‘=>2,
            ‘tf‘=>3,
            ‘dc‘=>15,

        );

        $url=SendSMS::SENDURL.‘?‘.http_build_query($data);
        $this->curlGet($url);

    }
   public function curlGet($url){
     $ch= curl_init();
     curl_setopt($ch,CURLOPT_HEADER,0);
     curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
     curl_setopt($ch,CURLOPT_URL,$url);
     $res=curl_exec($ch);
     curl_close($ch);
     return $res;
    }
}

在SendSMS里面的一些方法,你在第三方的短信验证码服务商提供的实例代码里面都可以看到,功能基本都是大同小异的,所以我们就实现一个属于自己的发送消息类,比较简单.

最后,我们就实现了一个属于自己的短信验证码发送功能

那么最后,你学会了吗?

原文地址:http://blog.51cto.com/13587708/2139041

时间: 2024-10-10 04:50:03

PHP 短信验证码功能的相关文章

Android开发:app工程集成mob短信验证码功能

一.前言 现在的app基本上都需要用到短信功能,注册时或者有消息通知时需要给用户发送一条短信,但是对于个人开发者来说,去买第三方的短信服务实在是有点奢侈,很好的是mob为我们提供了免费的短信验证码服务功能,我不是打广告,的确觉得这项服务很不错.那么下面就简单讲一下如何在自己的工程里集成mob的短信功能,其实整个流程并不复杂,只是个人觉得mob的官方文档有点小乱,官方Demo也有点小复杂,同时有一些细节地方容易被忽视,也会导致一些问题. PS:太喜欢mob的logo了. 二.实现过程 本篇只涉及A

android_app开发集成mob短信验证码功能

一.前言 现在的app基本上都需要用到短信功能,注册时或者有消息通知时需要给用户发送一条短信,但是对于个人开发者来说,去买第三方的短信服务实在是有点奢侈,很好的是mob为我们提供了免费的短信验证码服务功能,我不是打广告,的确觉得这项服务很不错.那么下面就简单讲一下如何在自己的工程里集成mob的短信功能,其实整个流程并不复杂,只是个人觉得mob的官方文档有点小乱,官方Demo也有点小复杂,同时有一些细节地方容易被忽视,也会导致一些问题. PS:太喜欢mob的logo了. 二.实现过程 本篇只涉及A

【源码分享】微米CMS怎么调用短信验证码功能

对接短信的时候发现一家短信公司,有些不错的短信验证码的插件,对接起来挺方便的,有需求的可以看一下.http://www.ihuyi.com/ 插件说明 本插件系互亿无线针对微米CMS_V29.2版本开发,请按以下说明进行安装,插件内的所有文件均为对原文件的修改,如果你的系统经过二次开发,安装本插件之前,请仔细核对修改. 功能介绍 手机号短信验证注册 安装步骤 覆盖以下文件Conf/sms.php.weimicms/Lib/ORG/Sms.class.php.tpl/System/Site/sms

PHP之短信验证码功能

现在网站在建设网站时为了保证用户信息的真实性,往往会选择发短信给用户手机发验证码信息,只有通过验证的用户才可以注册,这样既保证了用户的联系信息资料的100%的准确性,也为用户提供了一种最方便快捷的注册方式 .那么我们今天就来说一下 短信发送原理, 如下图工作开发流程: 第一.实现php手机短信验证功能的基本思路 1.要找到短信服务提供商,接入短信服务 2.在网站信息提交页面请求发送信息 3.服务器向短信服务提供商通信,提交发送请求 4.短信服务提供商通过运营商将信息发送到用户的手机中 第二 :手

ava调用WebService接口实现发送手机短信验证码功能

二:前台的注册页面的代码:reg.jsp  <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> <%@page import="cn.gov.csrc.base.action.FindAllData&

这是一个简单的前台短信验证码功能 ajax实现异步处理 (发送和校验)

<script type="text/javascript"> var InterValObj; //timer变量,控制时间 var count = 60;//间隔函数,1秒执行 var curCount;//当前剩余秒数 function sendMessage() { curCount = count; // 设置button效果,开始计时 document.getElementById("btnSendCode").setAttribute(&q

(生鲜项目)17. drf实现发送短信验证码功能

第一步; 前期分析 由于之前在设计model的时候, 我们已经决定对code进行数据库保存, 所以这里我们应该使用 mixins.CreateModelMixin 同时, 用户发过来的手机号码, 我们在后端应该执行自己的验证, 包括 手机号码是否被注册 手机号码是否合法  [在settings.py中加上 REGEX_MOBILE="^1[358]\d{9}$|^147\d{8}$|^176\d{8}$"] 两次验证码的间隔是否大于60秒 基于以上考虑, 我们需要创建一个 serial

Thinkphp 3.2中注册发送短信验证码功能(未进行盗刷处理版本)

好多人都感觉脱离了增删改查的功能都很难,实际上不是的,可能有些教程只是讲了核心的部分,导致一些基础不太好的同学有些蒙逼,本人作为一个基础不太好的同学,今天就从基础开始说说i哈 1.首先,想用短信服务,就得先有个阿里云帐号,然后去购买短信,购买后,然后你去生成一个app_id和key的值,声称这个值不用代码,在阿里云后台就可以生成的,然后生成一个模版,这个你们自己找就行,然后生成一个短信签名,短信签名是干什么的呢?给你们举个列子,一般广告短信都是[阿里云]迎十一大酬宾...或者[链家]十一大优惠,

【短信插件】短信如何实现Destoonb2b_V5.0短信验证码功能

找到了一家不错的短信插件,有需要对接的可以查看学习,在这边分享一下,有需要的可以详细看看,了解一下.http://www.ihuyi.com/ 插件说明本插件系互亿无线针对Destoonb2b_V5.0短信插件开发,插件内的所有文件均为对原文件的修改,如果你的系统经过二次开发,安装本插件之前,请仔细核对修改. 功能介绍手机号短信验证注册 安装步骤1.下载Destoonb2b_V5.0互亿无线插件后解压相应目录中:2.打开Destoonb2b_V5.0网站管理系统后台->会员管理->模块设置-&