本教程织梦短信接口插件代码基于微米短信平台(www.weimi.cc)的一个织梦短信接口。织梦58分享给大家。
(此图片来源于网络,如有侵权,请联系删除! )
具体代码
1、存储验证码到数据库,需要新建建一个数据表。后台----系统---- sql命令行工具,运行以下代码:(注意表前缀)
1
2
3
4
5
6
7
8
9
|
DROPTABLEIFEXISTS`dede_sms`;
CREATETABLE`dede_sms`(
`id`int(11)unsignedNOTNULLAUTO_INCREMENT,
`phone`varchar(15)NOTNULLDEFAULT'',
`code`varchar(8)NOTNULLDEFAULT'',
`created_at`int(10)NOTNULLDEFAULT'0',
`expire_at`int(10)NOTNULLDEFAULT'0',
PRIMARYKEY(`id`)
)ENGINE=MyISAMAUTO_INCREMENT=1DEFAULTCHARSET=utf8;
|
2、新建WMsendSms.PHP文件,放在/include目录下。具体代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
<?php
if(!defined('DEDEINC'))exit('RequestError!');
//发送短信
//$cid短信模板CID
functionsendSms($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,数字+大小写字母+特殊字符
functioncreateRandomCoder($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;
}
//保存验证码
functionsaveCode($phone,$code,$time=5)
{
global$dsql;
$created_at=time();
$expire_at=time()+($time*60);
$code=strtolower($code);
$sql="INSERTINTO`dede_sms`(`phone`,`code`,`created_at`,`expire_at`)VALUES('$phone','$code','$created_at','$expire_at')";
return$dsql->ExecuteNoneQuery($sql);
}
//检查手机号,验证码
functionvalidateCode($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)){
returntrue;
}else{
returnfalse;
}
}
//检查是否发送:防止恶意刷短信
//$phone手机号www.dede58.com织梦模板下载
//$time有效时间(分钟)
functionvalidatePremise($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']){
returnfalse;
}else{
$dsql->ExecuteNoneQuery("DELETEFROM`dede_sms`WHEREid=".$row['id']);
}
}
returntrue;
}
|
提示:表的前缀改为你的表前缀,这样就完成了织梦短信接口。
免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。