dedecms织梦短信接口插件代码(微米短信平台)
作者:达特 日期:2023-04-25 分类:CMS教程
本教程织梦短信接口插件代码基于微米短信平台(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;
}
提示:表的前缀改为你的表前缀,这样就完成了织梦短信接口。
具体代码
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;
}
提示:表的前缀改为你的表前缀,这样就完成了织梦短信接口。