核心思路
去掉验证码的通用思路是:

- 找到处理该功能的PHP文件(例如处理评论的
plus/feedback.php)。 - 找到验证码校验的代码段(通常是检查
safeqa或validate字段)。 - 注释掉或删除这段代码,让程序跳过验证。
- 找到生成验证码的HTML代码(
<img>标签和相关的输入框)。 - 删除这段HTML代码,让用户界面不再显示验证码。
去掉评论/留言验证码 (最常见)
这是最常被修改的地方,主要涉及两个文件:/plus/feedback.php (后端处理) 和模板文件 /templets/default/feedback.htm (前端显示)。
步骤 1:修改后端处理文件 /plus/feedback.php
-
用FTP或文件管理器打开
/plus/feedback.php文件。 -
搜索以下代码段,它通常在文件靠前的位置,用于接收表单数据:
$validate = empty($validate) ? '' : strtolower(trim($validate)); $safeqa = isset($safeqa) ? strtolower(trim($safeqa)) : ''; $vdcode = empty($vdcode) ? '' : strtolower(trim($vdcode));
-
在这行代码的后面,找到验证码校验的核心逻辑,它通常长这样:
(图片来源网络,侵删)//验证码 if($cfg_mb_open == 'Y' || $cfg_feedback_guest == 'Y') { if(empty($safeqa) && $safeqr == 1) { ShowMsg('请输入验证码!', '-1'); exit(); } else if($safeqr == 2) { if($validate != $vdcode) { ShowMsg('验证码错误!', '-1'); exit(); } } } -
注释掉或删除这段验证码校验的代码,为了安全起见,建议使用 将其注释掉,方便以后恢复。
/* //验证码 if($cfg_mb_open == 'Y' || $cfg_feedback_guest == 'Y') { if(empty($safeqa) && $safeqr == 1) { ShowMsg('请输入验证码!', '-1'); exit(); } else if($safeqr == 2) { if($validate != $vdcode) { ShowMsg('验证码错误!', '-1'); exit(); } } } */
步骤 2:修改前端模板文件 /templets/default/feedback.htm
-
打开你的评论模板文件,路径通常是
/templets/你的默认模板文件夹/feedback.htm。 -
在模板中找到显示验证码的HTML代码,它通常是这样的结构:
<li> <div class="feedback-texta"> <span>验证码:</span> <input type="text" name="validate" id="validate" class="text" style="width:50px;text-transform:uppercase;" /> <img id="vdimgck" src="{dede:global.cfg_cmspath/}/include/vdimgck.php" alt="看不清?点击更换" style="cursor:pointer" onclick="this.src='{dede:global.cfg_cmspath/}/include/vdimgck.php?'+Math.random();" /> </div> </li> -
直接删除包含
name="validate"和id="vdimgck"的整个<li>标签或其内部的div,这样用户在提交评论时就不会再看到验证码输入框和图片了。
注意: 如果你使用了非默认模板(比如dedecms默认模板是default,而你用的是pc或mobile),请确保修改的是你当前正在使用的模板文件夹下的feedback.htm。
去掉会员注册验证码
会员注册的验证码修改逻辑与评论类似,但文件不同。
步骤 1:修改后端处理文件 /member/reg_new.php
-
打开
/member/reg_new.php文件。 -
搜索验证码校验的代码,通常在处理表单提交的部分,类似这样:
if($safeqr == 2) { if($vdcode!=$validate) { ShowMsg('验证码错误!', '-1'); exit(); } } else { if($safeqr==1 && empty($safeqa)) { ShowMsg('请输入验证码!', '-1'); exit(); } } -
同样,将这段代码注释掉。
/* if($safeqr == 2) { if($vdcode!=$validate) { ShowMsg('验证码错误!', '-1'); exit(); } } else { if($safeqr==1 && empty($safeqa)) { ShowMsg('请输入验证码!', '-1'); exit(); } } */
步骤 2:修改前端模板文件 /templets/default/reg_new.htm
- 打开会员注册模板文件
/templets/default/reg_new.htm。 - 找到显示验证码的HTML代码,并将其删除,通常是一个包含
name="validate"的输入框和一个显示验证码图片的<img>
去掉后台登录验证码
后台登录验证码的修改方法略有不同,因为它涉及系统配置。
通过后台设置(推荐)
- 登录织梦后台。
- 进入【系统】->【系统基本参数】。
- 在左侧菜单中选择【核心设置】。
- 找到 “后台登录验证码” 这一项,将其值从
是修改为否。 - 点击【保存参数】即可,这是最安全、最推荐的方法。
直接修改代码(备用方法)
如果后台设置修改无效,可以手动修改代码。
-
打开后台登录入口文件
/dede/login.php。 -
搜索并找到验证码校验的代码段,通常是:
if($validate=='' || $validate!=$scode) { ShowMsg('验证码错误!', 'login.php'); exit(); } -
将其注释掉。
去掉自定义表单(表单模型)验证码
织梦的自定义表单功能非常强大,如果表单里加了验证码,修改方法如下:
步骤 1:修改处理文件 /plus/diy.php
-
打开
/plus/diy.php文件。 -
找到验证码校验的代码,通常在
if($diy->fieldInfo['validate'])这样的判断里:if($diy->fieldInfo['validate']) { if(empty($validate)) { showMsg('验证码不能为空', '-1'); exit(); } else { if($validate != $vdcode) { showMsg('验证码错误', '-1'); exit(); } } } -
注释掉这段完整的
if判断。
步骤 2:修改表单模板文件
- 找到你的自定义表单所使用的模板文件(在【核心】->【内容模型管理】中找到对应的表单模型,查看其模板路径)。
- 在模板文件中,找到生成验证码的代码,并删除它,通常包括:
- 一个
<input type="text" name="validate">输入框。 - 一个
<img src="/include/vdimgck.php">验证码图片。
- 一个
重要提醒与安全建议
- 风险自担:去掉验证码后,你的网站评论、留言、注册等入口将完全暴露,极有可能被机器人程序利用,发布大量垃圾信息,请务必评估风险。
- 使用反垃圾插件:为了弥补去掉验证码带来的安全漏洞,强烈建议你安装并配置织梦的反垃圾插件,Akismet for DedeCMS,它可以有效识别和拦截垃圾评论。
- 限制IP频率:可以通过修改
.htaccess文件或使用一些安全插件,来限制单个IP在单位时间内的评论或注册次数,防止恶意脚本高频攻击。 - 代码备份:在修改任何核心文件之前,请务必备份原始文件,以便在出现问题时可以快速恢复。
- 只修改需要的场景:不是所有地方都需要去掉验证码,后台登录建议保留,只去掉对用户体验影响最大的前台评论或注册的验证码。
希望这份详细的指南能帮助到你!
