phpcms v9表单向导添加验证码

时间:2023-03-08 16:22:05
phpcms v9表单向导添加验证码

要做留言板的功能,故用添加表单,想要在提交留言前加一个验证码的功能。网上的教程比较混乱,于是亲自实验了下,步骤如下:

首先是调用表单的页面加入验证码。表单js调用模版默认的是 \phpcms\templates\default\formguide\show.html(show_js.html)

phpcms v9表单向导添加验证码

添加如下代码:

<!--2018.11.07 add-->
{pc_base::load_sys_class('form', '', 0);}
<tr><td style="text-align:right;">验证码</td><td colspan="2"><span title="点击更换验证码" style=" cursor:pointer;"><input type="text" id="code" name="code" size="8" class="input-text">{form::checkcode('code_img', '4', '14', 100, 30)}</span></td></tr>
<!--end-->

  这里注意下:

注意,从标签中可知是使用了form类中的checkcode方法,那么就要确保此模板所在的控制器文件中已经调用了该类,调用方法如下:

{pc_base::load_sys_class('form', '', 0);}

  

二、找到这个文件 \phpcms\modules\formguide\index.php

phpcms v9表单向导添加验证码

在后面加上如下:

//2018.11.01 add
$session_storage = 'session_'.pc_base::load_config('system','session_storage');
pc_base::load_sys_class($session_storage);
//end

  

然后找到show()方法,如下:

phpcms v9表单向导添加验证码

在后面加上如下代码:

//2018.11.07 add
if(!empty($_SESSION['code'])) {
//判断验证码
$code = isset($_POST['code']) && trim($_POST['code']) ? trim($_POST['code']) : showmessage(L('input_code'), HTTP_REFERER);
if ($_SESSION['code'] != strtolower($code)) {
showmessage(L('code_error'), HTTP_REFERER);
}
}
//end

  然后就可以预览了,在前台调用的时候需要调用js代码,例如:

<script language='javascript' src='{APP_PATH}index.php?m=formguide&c=index&a=show&formid=12&action=js&siteid=1'></script>