导航首页 » 网站优化

dedecms织梦短信接口插件代码(微米短信平台)

2023/03/11 12:21    魔司收录网    已浏览145次

 本教程织梦短信接口插件代码基于微米短信平台(www.weimi.cc)的一个织梦短信接口。享给大家。


 

 具体代码

1、存储验证码到数据库,需要新建建一个数据表。 后台 ---- 系统 ---- sql命令行工具,运行以下代码:(注意表前缀)   
  DROP TABLE IF EXISTS `dede_sms`;
    CREATE TABLE `dede_sms` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
      `phone` varchar(15) NOT NULL DEFAULT '',
      `code` varchar(8) NOT NULL DEFAULT '',
      `created_at` int(10) NOT NULL DEFAULT '0',
      `expire_at` int(10) NOT NULL DEFAULT '0',
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

2、新建 WMsendSms.PHP 文件,放在 /include 目录下。具体代码如下:   
<?php
    if(!defined('DEDEINC')) exit('Request Error!');
     
    //发送短信
    //$cid 短信模板CID
    function sendSms($mob,$cid = '微米短信模板查看CID')
    {
        $res = validatePremise($mob);
        if($res){
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, "http://api.weimi.cc/2/sms/send.html");
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
            curl_setopt($ch, CURLOPT_POST, TRUE);
            /*
            传入模板参数。短信模板内容示例:
                【微米】您的验证码是:%P%,%P%分钟内有效。如非您本人操作,可忽略本消息。
                传入两个参数:
                p1:610912
                p2:3
                最终发送内容:
                【微米】您的验证码是:610912,3分钟内有效。如非您本人操作,可忽略本消息。
            */
            $uid = '微米查看去';
            $pas = '微米查看去';
            $p1 = createRandomCoder(4);
            $p2 = 5; //分钟
            curl_setopt($ch, CURLOPT_POSTFIELDS, "uid=$uid&pas=$pas&mob=$mob&cid=$cid&p1=$p1&p2=$p2&type=json");
            $res = curl_exec( $ch );
            curl_close( $ch );
            $arr = json_decode($res,true);
            if($arr['code'] == 0){
                saveCode($mob,$p1);
                return "短信发送成功!";
            }
            return "短信发送失败!";
        }else{
            return "短信发送频繁,请稍后再发送!";
        }
    }
     
    //生成随机字符串 
    //$len  要生成的随机字符串长度
    //$type 随机码类型:0,数字+大小写字母;1,数字;2,小写字母;3,大写字母;4,特殊字符;-1,数字+大小写字母+特殊字符
    function createRandomCoder($len,$type = '0')    
    {
        $arr = array(1 => "0123456789", 2 => "abcdefghijklmnopqrstuvwxyz", 3 => "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 4 => "~@#$%^&*(){}[]|");
        if ($type == 0) {
            array_pop($arr);
            $string = implode("", $arr);
        } elseif ($type == "-1") {
            $string = implode("", $arr);
        } else {
            $string = $arr[$type];
        }
        $count = strlen($string) - 1;
        $code = '';
        for ($i = 0; $i < $len; $i++) {
            $code .= $string[rand(0, $count)];
        }
        return $code;
    }
     
    //保存验证码
    function saveCode($phone,$code,$time = 5)
    {
        global $dsql;
        $created_at = time();
        $expire_at = time() + ($time * 60);
        $code = strtolower($code);
        $sql = "INSERT INTO `dede_sms`(`phone`,`code`,`created_at`,`expire_at`) VALUES ('$phone','$code','$created_at','$expire_at')";
        return $dsql->ExecuteNoneQuery($sql);
    }
     
    //检查手机号,验证码
    function validateCode($phone,$code)
    {
        global $dsql;
        $code = strtolower($code);
        $current = time();
        $sql = "SELECT `id` FROM `dede_sms` WHERE `phone` LIKE '$phone' AND `code` LIKE '$code' AND `expire_at` > '$current' ";
        $row = $dsql->GetOne($sql);
        if(is_array($row)){
            return true;
        }else{
            return false;
        }
    }
     
    //检查是否发送:防止恶意刷短信
    //$phone 手机号 www.lol9.cn织梦模板下载
    //$time  有效时间 (分钟)
    function validatePremise($phone,$time = '1')
    {
        global $dsql;
        $row = $dsql->GetOne("SELECT `id`,`expire_at` FROM `dede_sms` WHERE `phone` LIKE '$phone' ");
        if(is_array($row)){
            if( time() < $row['expire_at'] ){
                return false;
            }else{
                $dsql->ExecuteNoneQuery("DELETE FROM `dede_sms` WHERE id=".$row['id']);
            }
        }
        return true;
    }

提示:表的前缀改为你的表前缀,这样就完成了织梦短信接口