zdcms表单二次开发短信验证码功能

用zdcms做网站表单时,想要用短信验证码来预防表单恶意提交,应该如何实现呢?今天就来详细说说实现步骤:

首先,打开你的表单控制器文件,通常在/dayrui/App/Form/Controllers/目录下,加入你的表单名称为baoming,则找到/dayrui/App/Form/Controllers/baoming.php,然后如下面代码所示,在中间插入一段代码:

<?php namespace Phpcmf\Controllers;

/**
 * 二次开发时可以修改本文件,不影响升级覆盖
 */

class Zxly extends \Phpcmf\Home\Form
{

    public function index() {
        $this->_Home_List();
    }

    public function show() {
        $this->_Home_Show();
    }
    
    public function post() {
    
//加入验证代码开始 
   
            if (IS_POST) {
            $phone = $_POST['data']['mtel']; // mtel为你的手机号字段名
            $code = \Phpcmf\Service::L('Form')->get_mobile_code($phone);
            if (!$code) {
                $this->_json(0, dr_lang('未发送验证码'));
            } elseif ($code != $_POST['sms']) {
                $this->_json(0, dr_lang('验证码错误'));
            }

        }

//加入验证代码结束
    
        $this->_Home_Post();
    }

}


然后,打开的表单HTML模板,在需要短信验证的位置插入以下代码:

<div class="form-group" id="dr_row_sms">
 <label class="col-md-2 control-label">短信验证</label>
 <div class="col-md-10">
  <div class="input-group input-large">
   <input class="form-control placeholder-no-fix" type="text" autocomplete="off" id="dr_sms" name="sms">
   <div class="input-group-btn">
    <button class="btn blue" onclick="dr_ajax_url('/index.php?s=member&c=api&m=send_code&&code='+$('#dr_code').val()+'&id='+$('#dr_mtel').val())" type="button">获取手机验证码</button>
   </div>
  </div>
 </div>
</div>

<!--注意:button按钮中#dr_mtel里面的mtel为你自定义的手机号码字段名-->


最后记得去系统设置里面配置下短信接口。

完成以上三个步骤后,就可以在提交表单时用短信验证码来核验短信了。

评论