PHPCMS v9表单向导中怎么加入验证码
表单想到比较简单,所以没有加入验证码的功能。网上的类似教程又大多数不准确。所以亲自测试了一下,发现下面的方法是可用的。希望对有需求的朋友们有所帮助。
1.首先是调用表单的页面加入验证码。表单js调用模版默认的是 \phpcms\templates\default\formguide\show_js.html.
在该文件里面找到这行代码,大概在23行
<tr> <th width="80">{if $info['star']} <font color="red">*</font>{/if} {$info['name']} </th> <td>{$info['form']} {$info['tips']}</td> </tr> {/loop}
在下面加入一行代码。
<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"> 请输入图片中的验证码 </td> </tr>
2.找到这个文件 \phpcms\modules\formguide\index.PHP
这个需要修改两处
1)在第三行找到这行代码。
defined('IN_PHPCMS') or exit('No permission resources.'); define('CACHE_MODEL_PATH',PHPCMS_PATH.'caches'.DIRECTORY_SEPARATOR.'caches_model'.DIRECTORY_SEPARATOR.'caches_data'.DIRECTORY_SEPARATOR);
然后在后面加入下面两行代码
$session_storage = 'session_'.pc_base::load_config('system','session_storage'); pc_base::load_sys_class($session_storage);
2)找到下面这行代码
if (isset($_POST['dosubmit'])) { $tablename = 'form_'.$r['tablename']; $this->m_db->change_table($tablename);
然后在下面加入下面这段代码
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); } }
我是Vector,谢谢关注。