[PHP 开发]帝国cms 添加短信验证功能

PHP

前置条件:

apistore拿到apikey

  1. 登录帝国cms后台,修改表单

1.jpeg

2.jpeg

添加一个phone 字段和sms_code 字段(如果有就不用添加了,重点代码已经圈出来了)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<table width='100%' cellpadding=3 cellspacing=1 bgcolor='#DBEAF5'>
    <tr>
     <td width='16%' height=25 bgcolor='ffffff'>真实姓名</td>
     <td bgcolor='ffffff'>\[!--truename--\]</td>
     </tr>
     <tr>
     <td width='16%' height=25 bgcolor='ffffff'>手机</td>
     <td bgcolor='ffffff'>\[!--phone--\]
     <button type="button" id="send">发送验证码</button></td>
                            
     </tr>
      <tr>
        <td width='16%' height=25 bgcolor='ffffff'>验证码</td>
        td bgcolor='ffffff'>\[!--sms_code--\]</td>
                            
       </tr>
 </table>

  1. 修改代码

  2. 在\e\template\incfile\header.php 添加

3.jpeg4.jpeg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

<script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>

$(function() {
   $('#send').click(function() {
            var phoneNum = eval(document.getElementById('phone')).value;
         $.ajax({
             type: "GET",
             url: "./sendSms.php?phone="+phoneNum,
                      success: function(data){
                                alert(data);
                      }
             });
   });
});
  1. 复制sendSms.php 到\e\member\register下
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

<?php
define("API_KEY""4805a51ac0d14adede8d0a59747****");
define("CONTENT""您本次的验证码为:****,请于5分钟内使用,谢谢!");
define("VALID_TIME"5 * 60);
header('P3P: CP="CAO DSP COR CUR ADM DEV 
TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi 
OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT 
DEM CNT STA POL HEA PRE GOV"');
$phone = $_REQUEST\["phone"\];
if (isset($_COOKIE\[$phone \])) {
echo "请5分钟后重试";
return;
}
sendSms($phone);
function sendSms($phone)
{
$code = rand(100000,999999);
//$code = "123456";
setcookie($phone, $code, time()+VALID_TIME,"/");
$content = str_replace("****", $code, CONTENT);
$content = urlencode($content);
$req = "phone=$phone&content=$content";
$ch = curl_init();
    $url = 'http://apis.baidu.com/hunanlehuotechnologyco/sms/api?'.$req;
    $header = array(
        'apikey: '.API_KEY,
    );
    // 添加apikey到header
    curl\_setopt($ch, CURLOPT\_HTTPHEADER  , $header);
    curl\_setopt($ch, CURLOPT\_RETURNTRANSFER, 1);
    // 执行HTTP请求
    curl\_setopt($ch , CURLOPT\_URL , $url);
    $res = curl_exec($ch);
//echo $res;
echo "发送成功,5分钟内验证有效";
}
?>

注意:所有与sms相关的配置都在这个文件中,修改相应的参数即可

C) \e\data\language\gb\pub\q_message.php添加一个错误提示

5.jpeg

‘ERROR_SMS_CODE’=>’短信验证码不正确’,

D)修改 \e\member\class\member_registerfun.php

6.gif

1
2
3
4
5
6
$sms\_code=trim($add\['sms\_code'\]);
 $phone =trim($add\['phone'\]);
 if($sms\_code!=$\_COOKIE\[$phone\])
{
    printerror('ERROR\_SMS\_CODE','',1);
 }

效果图:

7.jpeg

失败提示:

8.jpeg