首页  »  站长资讯  »  网站优化

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

2023/03/11 12:21     创新屋收录网     已浏览347次
 本教程织梦短信接口插件代码基于微米短信平台(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 目录下。具体代码如下:   


    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;

    }



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