表单想到比较简单,所以没有加入验证码的功能。网上的类似教程又大多数不准确。所以亲自测试了一下,发现下面的方法是可用的。希望对有需求的朋友们有所帮助。
1首先是调用表单的页面加入验证码。表单js调用模版默认的是\phpcms\templates\default\formguide\show_js.html.
在该文件里面找到这行代码,大概在23行
1
2
3
4
5
6
|
<tr>
<th width=
"80"
>{
if
$info[
'star'
]} <font color=
"red"
>*</font>{/
if
} {$info[
'name'
]}
</th>
<td>{$info[
'form'
]} {$info[
'tips'
]}</td>
</tr>
{/loop}
|
在下面加入一行代码。
1
|
<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'
,
84
,
24
)}</span>请输入图片中的验证码</td></tr>
|
2找到这个文件\phpcms\modules\formguide\index.php
这个需要修改两处
1)在第三行找到这行代码。
1
2
|
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);
|
然后在后面加入下面两行代码
1
2
|
$session_storage =
'session_'
.pc_base::load_config(
'system'
,
'session_storage'
);
pc_base::load_sys_class($session_storage);
|
2)找到下面这行代码
1
2
3
|
if
(isset($_POST[
'dosubmit'
])) {
$tablename =
'form_'
.$r[
'tablename'
];
$
this
->m_db->change_table($tablename);
|
然后在下面加入下面这段代码
1
2
3
4
5
6
7
|
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);
}
}
|
好了刷新下你的表单页面,随机码已经出来了。