php手机短信接口发送验证码

SMS.CN的短信接口
发送验证码

HTML index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>短信模块</title>

<style type="text/css">
<!--
body,td,th {
    font-size: 12px;
    font-family: 微软雅黑;
}
.number{ height:22px; line-height:22px;font-family: 微软雅黑;}
-->
</style>
</head>

<body>

<!--以下功能是根据需要调用 A-->

<script language="JavaScript" type="text/javascript" src="js_yz.js"></script>
<form id="feedbackform" name="feedbackform" action="" method="post" >
    <table width="501" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC" style="margin-top:50px;">
      <tr>
        <td width="133" height="45" bgcolor="#FAFAFA" style="padding-left:10px;">获取短信验证码:</td>
        <td width="365" height="45" bgcolor="#FAFAFA" style="padding-left:10px;"><input name="scms_gettel" id="scms_gettel" class="number" type="text" value="18810306233" />
        <input name="right_yzcode" id="right_yzcode" type="hidden" value="" />              <input name="Submitbfs" type="button" value="获取验证码" class="btn submit" id="Submitbfs" onclick="giveduanxin(document.getElementById('scms_gettel').value)" style="height:28px;"/></td>
      </tr>
      <tr>
        <td height="45" bgcolor="#FAFAFA" style="padding-left:10px;">您收到的验证码:</td>
        <td height="45" bgcolor="#FAFAFA" style="padding-left:10px;"><input type="text" name="scms_yzcode" id="scms_yzcode" class="number" value="" maxlength="6" onblur="giveyz(document.getElementById('scms_yzcode').value)" style="float:left" /><div id="show_statu" style=" float:left;font-size:12px; text-align:left; border:1px solid #FFCC00; line-height:25px; background:#FFFFCC; color:#333333; display:none; height:25px; padding-left:10px; margin-left:8px;"></div></td>
      </tr>
    </table>

</form>

<!--以下功能是根据需要调用 B-->

</body>
</html>

* yz.js*



function qingkong(){ //清空提示函数
    updateinfo();
}

var wait = 90; //停留时间
function updateinfo(){

    if(wait == 0){
        document.getElementById('Submitbfs').value = "获取验证码";
        document.getElementById('Submitbfs').disabled="";
        document.getElementById("show_statu").style.display='none';
        //document.getElementById("show_statu").innerHTML="<span style=color:blue>如果您没有收到短信校验码,您现在可以重新获取!</span>";
        wait=90 //还原重发时的初始值
    }
    else{
        document.getElementById('Submitbfs').disabled="disabled"; //防止关闭层后,又激活了
        document.getElementById('Submitbfs').value = "等待 "+wait+" 秒";
        wait--;
        setTimeout("updateinfo()",1000);
    }

}

//------------------------------------------------------------


function giveyz(scms_yzcode)
{
    var chk=true;
    var divid=document.getElementById("show_statu");
    var regex=/[0-9]$/ 

    divid.style.display='block';

    if (scms_yzcode=="" ){
        divid.innerHTML="<span style='color:red'>请填写您收到的短信校验码!</span>";
    }else if ( document.getElementById('right_yzcode').value!=scms_yzcode ){
        divid.innerHTML="<span style='color:red'>您填写的短信校验码不正确!</span>";
    }else if ( document.getElementById('right_yzcode').value==scms_yzcode ){
        divid.innerHTML="<span style='color:green'>验证成功!</span>";
        //divid.style.display='none';
    }
}

var xmlHttp

function giveduanxin(tel)
{
    var chk=true;
    var divid=document.getElementById("show_statu");
    var regex=/^(?:13\d|15\d|18[123456789])-?\d{5}(\d{3}|\*{3})$/;

    divid.style.display='';

    if (tel=="" ){
        divid.innerHTML="<span style='color:red'>请填写手机号码!</span>";
    }else if ( !regex.exec(tel) ){
        divid.innerHTML="<span style='color:red'>手机号码格式不正确!</span>";
    }else{

        xmlHttp=GetXmlHttpObject()
        if (xmlHttp==null)
        {
            alert ("抱歉,浏览器不支持")
            return
        } 

        var url="http://localhost/mcode/yz_send.php"
        url=url+"?action=chk&tel="+tel
        url=url+"&sid="+Math.random()
        xmlHttp.onreadystatechange=stateChanged
        xmlHttp.open("GET",url,true)
        xmlHttp.send(null)
    } 

    function stateChanged() 
    { 
         if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
         {

             var give_strs= new Array(); //定义一数组
             give_strs=xmlHttp.responseText.split("|"); //字符分割  

             if (give_strs[0]=="right"){
                //document.getElementById('Submitbfs').style.visibility='hidden';
                //closeWindow();
                divid.innerHTML="<span style='color:green'>验证码已发送,请查收!</span>";
                //document.getElementById('codeshows').innerHTML=yzm;
                document.getElementById('Submitbfs').disabled="disabled";//立即失效,并开始提示下面是2秒后换提示内容并开始倒数
                document.getElementById('right_yzcode').value=give_strs[1];//回传发到短信的校验码
                setTimeout("qingkong()",2000);//1秒后提示,重新发送
             }else{
                divid.innerHTML=xmlHttp.responseText;
             }
         }
    }

    //document.getElementById('Submitbfs').disabled="disabled";

}

function GetXmlHttpObject(){
    var xmlHttp=null;
    try
     {
     // Firefox, Opera 8.0+, Safari
     xmlHttp=new XMLHttpRequest();
     }
    catch (e)
     {
     // Internet Explorer
     try
      {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
     catch (e)
      {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
     }
    return xmlHttp;

}

yz_send.php

<?php
$action=$_REQUEST['action'];
$tel=$_REQUEST['tel'];
$yzm=$_REQUEST['yzm'];

function randomkeys($length){
    $pattern='1234567890'; //字符池
    for($i=0;$i<$length;$i++){
        $key.=$pattern{mt_rand(0,9)};//生成php随机数
    }
    return $key;
}

function give_ms($yzm,$tel){ //发送短信    短信开关,帐号,密码,内容,手机呈

file_get_contents("http://api.sms.cn/mt/?uid=xxxxx&pwd=".md5(xxxxxxx)."&mobile=".$tel."&mobileids=&content=".$msg."");


}

$yzm=randomkeys(6);

if ($action=="chk"){

    if ($tel=="" || $yzm=="" ){
        $instrs =  "短信验证码发送失败!";
        $outstrs = iconv('GBK','UTF-8',$instrs);
        echo $outstrs;
        exit;
    }


    //查询号码是否预约过
    if($tel == true){
        //查询数据库  leave_tell
        $db = require('../caches/configs/database.php');
        $con_arr = $db['default'];
        $conn=mysql_connect($con_arr['hostname'],$con_arr['username'],$con_arr['password']) or die("error connecting") ; //连接数据库
        mysql_query("set names 'utf8'"); 
        mysql_select_db($con_arr['database']);
        $tablename = $con_arr['tablepre'].'guestbook';
        $sql ="select * from $tablename where leave_tell = ".$tel; 
        $result = mysql_query($sql,$conn); 
        $res = mysql_fetch_row($result);
        if(!empty($res) && $res == true){
            $instr =  "您的手机号已经注册过!";
            $outstr = iconv('GBK','UTF-8',$instr);
            echo $outstr;
            exit;
        }
    }



    give_ms($yzm,$tel);
    echo "right|".$yzm;
    //echo "right|666666";
    exit;


}

?>

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现短信发送验证码并设置验证码时效可以按照以下步骤进行: 1. 首先,需要获取用户手机号码和验证码,并在后台进行验证。可以使用 PHP 的正则表达式来验证手机号码格式是否正确。 2. 接下来,可以使用第三方短信服务提供商的 API 来发送短信验证码。例如,阿里云、腾讯云、百度云等都提供了短信服务 API。 3. 在发送短信验证码时,需要将验证码手机号码存储到数据库中,以便后续验证。 4. 设置验证码时效,可以在存储验证码时记录验证码的生成时间,并在验证时判断当前时间是否超过验证码的有效期。可以使用 PHP 的时间函数来实现。 下面是一个简单的示例代码: ```php // 用户手机号码和验证码 $mobile = $_POST['mobile']; $code = mt_rand(100000, 999999); // 发送短信验证码 $api_key = 'your_api_key'; $api_secret = 'your_api_secret'; $api_url = 'https://api.example.com/sms/send'; $data = array( 'mobile' => $mobile, 'code' => $code, ); $options = array( 'http' => array( 'method' => 'POST', 'header' => 'Content-type: application/json', 'content' => json_encode($data), ), ); $context = stream_context_create($options); $result = file_get_contents($api_url, false, $context); // 存储验证码及其生成时间 $expires_at = time() + 600; // 设置验证码有效期为10分钟 $db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password'); $stmt = $db->prepare('INSERT INTO verification_codes (mobile, code, expires_at) VALUES (?, ?, ?)'); $stmt->execute(array($mobile, $code, $expires_at)); echo '验证码发送,请注意查收。'; ``` 在验证验证码时,可以使用如下代码: ```php $mobile = $_POST['mobile']; $code = $_POST['code']; $db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password'); $stmt = $db->prepare('SELECT * FROM verification_codes WHERE mobile = ? AND code = ? AND expires_at > ?'); $stmt->execute(array($mobile, $code, time())); $row = $stmt->fetch(); if ($row) { // 验证码正确,可以进行下一步操作 } else { // 验证码错误或已过期 } ``` 注意,在实际生产环境中,需要对代码进行安全性和可靠性的考虑,例如,防止 XSS、CSRF 攻击,以及保护数据库密码等敏感信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值