导航
点击关闭

ecmall电脑手机端短信接口实例详解

2018-12-24 15:51:20   稿源:
ecmall,ecmall短信接口
数据库:
ecm_msg
ecm_msglog

//////////////////////////////////////////////////
--------------------------------------------------
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

admin/includes/
        menu.inc.php

website项增加:
            'msg' => array(
                'text' => Lang::get('msg'),
                'url' => 'index.php?app=msg',
            ),

        priv.inc.php

website项增加:

        'msg'=> 'msg|all',//手机短信管理

//////////////////////////////////////////////////
--------------------------------------------------
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

新增加文件:

includes/libraries/
        mobile_msg.lib.php

admin/app/
        msg.app.php  


admin/templates/
        msg.user.html
        msg.setting.html
        msg.send.html
        msg.index.html
        msg.add.html


languages/sc-utf-8/
        msg.lang.php
        msglog.lang.php

languages/sc-utf-8/admin/
        msg.lang.php

languages/sc-utf-8/admin/
        common.lang.php

增加:
    'msg' => '手机短信管理',

languages/sc-utf-8/
        member.lang.php
最后增加:
    //短信相关
    'phone_mob_required' => '手机号码必须输入',
    'edit_mobile' => '修改手机号码',
    'bind_mobile_now' => '立即绑定手机号码',
    'phone_mob_number' => '手机号码必须是数字',
    'confirm_code' => '验证码',
    'send_code' => '免费发送短信验证码',
    'mobile_code_required' => '短信验证码不能为空',
    'mobile_code_must_be_number' => '短信验证码必须是数字',
    'mobile_code_limit' => '短信验证码必须为6位',
    'mobile_code_error' => '短信验证码错误',
    'mobile_not_exsit'=>'手机号码不存在',
    'new_phone_mob' => '手机号码',
    'old_phone_mob' => '原手机号码:',
    'sms_bind_mobile' => '您好,您的会员绑定手机号码操作验证码为:',
    'edit_mobile_successed' => '编辑手机号成功',
    'bind_card_success' => '绑定成功',
    'bind'=>'绑定',
    'phone_mob_limit' => '手机号码长度必须为11位',
    'mobile_already_exsit' => '您提供的手机号码已存在,<a href="index.php?app=find_password">点击找回密码</a>',


languages/sc-utf-8/
        find_password.lang.php

最后增加:

    //短信相关
    'send_code'=>'发送验证码',
    'confirm_code'=>'验证码',
    'confirm_code_error'=>'验证码错误',
    'mobile_not_exsit'=>'手机号码不存在',
    'phone_mob_required'=>'手机号码不能为空',
    'mobile_code_required'=>'手机验证码不能为空',
    'mobile_code_limit' => '短信验证码必须为6位',
    'mobile_code_error' => '短信验证码错误',




themes/mall/default(此目录选择使用模板目录):

        msg.index.html
        msg.send.html
        msg.set.html






//////////////////////////////////////////////////
--------------------------------------------------
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

app/member.app.php

查找:
function register

if (Conf::get('captcha_status.register'))
上一行增加:
            if (Conf::get('msg_enabled')) {
                $this->assign('msg_enabled', 1);
            }


250行左右查找:
$ms = & ms(); //连接用户中心

上一行增加:

            if (Conf::get('msg_enabled') && $_SESSION['MobileConfirmCode'] != $_POST['confirm_code']) {
                $this->show_warning('mobile_code_error');
                return;
            }


查找:
$user_id = $ms->user->register($user_name, $password, $phone_tel,$phone_mob);

替换:
$user_id = $ms->user->register($user_name, $password,$email, array('phone_mob'=>$_POST['phone_mob']));

查找函数:
function _get_member_submenu()

函数内增加:
        if (Conf::get('msg_enabled'))
        {
            $submenus[] = array(
                'name' => 'edit_mobile',
                'url' => 'index.php?app=member&amp;act=mobile',
            );
        }

最后插入短信代码:

    /**
     * 注册发送验证码
     */
    function send_code() {
        if (!Conf::get('msg_enabled')) {
            return;
        }
        $mobile = empty($_GET['mobile']) ? '' : trim($_GET['mobile']);
        if (!$mobile) {
            echo ecm_json_encode(false);
            return;
        }
        //发送短信的格式  
        $type = $_GET['type'];
        if (!in_array($type, array('register', 'find', 'change'))) {
            echo ecm_json_encode(false);
            return;
        }
        //发送验证码
        import('mobile_msg.lib');
        $mobile_msg = new Mobile_msg();
        $result = $mobile_msg->send_msg_system($type, $mobile);
        echo ecm_json_encode($result);
    }

    /**
     * 核对手机发送的验证码是否相同
     */
    function cmc() {
        $confirm_code = empty($_GET['confirm_code']) ? '' : trim($_GET['confirm_code']);
        if (empty($_SESSION['MobileConfirmCode']) || !$confirm_code) {
            echo ecm_json_encode(false);
            return;
        } else {
            if ($confirm_code == $_SESSION['MobileConfirmCode']) {
                echo ecm_json_encode(true);
            } else {
                echo ecm_json_encode(false);
            }
        }
    }

    /*
     * 检测时候是否已经被注册
     */

    function check_mobile() {
        $phone_mob = empty($_GET['phone_mob']) ? '' : trim($_GET['phone_mob']);
        if (!$phone_mob) {
            echo ecm_json_encode(false);
            return;
        }
        //发送短信的格式  
        $type = $_GET['type'];
        if (!in_array($type, array('register', 'find', 'change'))) {
            echo ecm_json_encode(false);
            return;
        }

        $ms = & ms();
        if ($type == 'find') {
            //找回密码是需要存在的电话号码
            echo ecm_json_encode(!$ms->user->check_mobile($phone_mob));
        } else {
            //注册以及修改是需要不存在的电话号码
            echo ecm_json_encode($ms->user->check_mobile($phone_mob));
        }
    }

    /**
     *    修改手机号码
     *
     *    @author    Hyber
     *    @usage    none
     */
    function mobile() {
        $user_id = $this->visitor->get('user_id');
        if (!IS_POST) {
            /* 当前位置 */
            $this->_curlocal(LANG::get('member_center'), 'index.php?app=member', LANG::get('edit_mobile'));
            /* 当前用户中心菜单 */
            $this->_curitem('my_profile');
            /* 当前所处子菜单 */
            $this->_curmenu('edit_mobile');
            $this->import_resource(array(
                'script' => 'jquery.plugins/jquery.validate.js',
            ));
            $user_mod = & m('member');
            $user = $user_mod->get_info($user_id);

            $this->assign('user', $user);
            $this->_config_seo('title', Lang::get('user_center') . ' - ' . Lang::get('edit_mobile'));
            $this->display('member.mobile.html');
        } else {
            $orig_password = $_POST['orig_password'];
            $mobile = isset($_POST['phone_mob']) ? trim($_POST['phone_mob']) : '';
            if (!$mobile) {
                $this->show_warning('mobile_required');
                return;
            }
            if (Conf::get('msg_enabled') && $_SESSION['MobileConfirmCode'] != $_POST['confirm_code']) {
                $this->show_warning('mobile_code_error');
                return;
            }
            $ms = & ms();    //连接用户系统
            $result = $ms->user->edit($this->visitor->get('user_id'), $orig_password, array(
                'phone_mob' => $mobile
            ));
            if (!$result) {
                $this->show_warning($ms->user->get_error());
                return;
            }
            $this->show_message('edit_mobile_successed');
        }
    }
    




用户注册模板修改:

新增表单:
                            <!--{if $msg_enabled}-->
                            <dl class="clearfix">
                                <dt>{$lang.phone_mob}</dt>
                                <dd>
                                    <input type="text" id="phone_mob" name="phone_mob" class="input" maxlength="11" />
                                    <br /><label></label>
                                </dd>
                            </dl>
                            <dl class="clearfix">
                                <dt>{$lang.confirm_code}</dt>
                                <dd>
                                    <input class="input" type="text" id="confirm_code" name="confirm_code" value=""/>
                                    <br /><label></label>
                                </dd>
                            </dl>
                            <dl class="clearfix">
                                <dt>&nbsp;</dt>
                                <dd>
                                    <input type="button" id="sendsms" value="{$lang.send_code}"/>
                                    <br /><label></label>
                                </dd>
                            </dl>
                            <!--{/if}-->

新增JS代码:

查找:
password : {

上一行增加代码:

                phone_mob: {
                    required: true,
                    number: true,
                    byteRange: [11, 11, '{$charset}'],
                    remote: {
                        url: 'index.php?app=member&act=check_mobile&type=register',
                        type: 'get',
                        data: {
                            phone_mob: function() {
                                return $('#phone_mob').val();
                            }
                        },
                        beforeSend: function() {
                            var _checking = $('#checking_mobile');
                            _checking.prev('.field_notice').hide();
                            _checking.next('label').hide();
                            $(_checking).show();

                        },
                        complete: function() {

                            $('#checking_mobile').hide();
                        }
                    }
                },
                confirm_code: {
                    required: true,
                    number: true,
                    byteRange: [6, 6, '{$charset}'],
                    remote: {
                        url: 'index.php?app=member&act=cmc&ajax=1',
                        type: 'get',
                        data: {
                            confirm_code: function() {
                                return $('#confirm_code').val();
                            }
                        },
                        beforeSend: function() {
                            var _checking = $('#checking_code');
                            _checking.next('label').hide();
                            $(_checking).show();

                        },
                        complete: function() {
                            $('#checking_code').hide();
                        }
                    }
                },


继续查找:
password  : {

上一行增加:

                phone_mob: {
                    required: '{$lang.phone_mob_required}',
                    number: '{$lang.phone_mob_number}',
                    byteRange: '{$lang.phone_mob_limit}',
                    remote: '{$lang.mobile_already_exsit}'
                },
                confirm_code: {
                    required: '{$lang.mobile_code_required}',
                    number: '{$lang.mobile_code_must_be_number}',
                    byteRange: '{$lang.mobile_code_limit}',
                    remote: '{$lang.mobile_code_error}'
                },




    <script>
                var canSend = true;
                var time = 60;
                var dtime = 60;
                $("#sendsms").bind('click', function() {
                    var btn = $(this);
                    if (!canSend)
                        return;
                    var sendaddress = $('#phone_mob').val();
                    var fhm = $("[for='phone_mob']").text();
                    if (fhm != '' && fhm != "OK!") {
                        alert("请输入正确的手机号码!");
                        return;
                    }
                    if (fhm == '' && $('#phone_mob').val() == "") {
                        alert("请输入正确的手机号码!");
                        return;
                    }
                    canSend = false;
                    $.ajax({
                        type: "get",
                        url: "index.php?app=member&act=send_code&type=register",
                        data: {
                            mobile: function() {
                                return sendaddress;
                            }
                        },
                        success: function(msg) {
                            var hander = setInterval(function() {
                                if (time <= 0) {
                                    canSend = true;
                                    clearInterval(hander);
                                    btn.val("重新发送验证码");
                                    btn.removeAttr("disabled");
                                    time = dtime;
                                } else {
                                    canSend = false;
                                    btn.attr({
                                        "disabled": "disabled"
                                    });
                                    btn.val(time + "秒后可重新发送");
                                    time--;
                                }
                            }, 1000);
                            if (msg) {
                                alert("短信已发送至:" + sendaddress + " 请注意查收!");
                            } else {
                                canSend = true;
                                alert("短信发送失败,请检查手机号码是否正确!");
                            }
                        }
                    });
                });
    </script>


app/find_password.app.php
最后增加:

    function mobile() {
        if (!IS_POST) {
            $this->import_resource('jquery.plugins/jquery.validate.js');
            $this->display("find_password.mobile.html");
        } else {
            $addr = $_SERVER['HTTP_REFERER'];
            if (empty($_POST['username']) || empty($_POST['phone_mob']) || empty($_POST['confirm_code'])) {
                $this->show_warning("unsettled_required", 'go_back', $addr);
                return;
            }
            $username = trim($_POST['username']);
            $phone_mob = trim($_POST['phone_mob']) ? $_POST['phone_mob'] : '';
            $confirm_code = empty($_POST['confirm_code']) ? null : trim($_POST['confirm_code']);

            /* 简单验证是否是该用户 */
            $ms = & ms();     //连接用户系统
            $info = $ms->user->get($username, true);
            if (empty($info) || $info['phone_mob'] != $phone_mob) {
                $this->show_warning('not_exist', 'go_back', $addr);
                return;
            }
            if (empty($_SESSION['MobileConfirmCode']) || !$confirm_code) {
                $this->show_warning("confirm_code_error");
                return;
            } else {
                if ($confirm_code == $_SESSION['MobileConfirmCode']) {
                    $word = $this->_rand();
                    $md5word = md5($word);
                    $res = $this->_password_mod->get($info['user_id']);
                    if (empty($res)) {
                        $info['activation'] = $md5word;
                        $this->_password_mod->add($info);
                    } else {
                        $this->_password_mod->edit($info['user_id'], array('activation' => "{$md5word}"));
                    }
                    header("Location: index.php?app=find_password&act=set_password&id=" . $info['user_id'] . "&activation=" . $word);
                } else {
                    $this->show_warning("confirm_code_error");
                    return;
                }
            }
        }
    }

需要此插件请联系QQ:245469985
移动手机端
扫码二维码
返回顶部