- 安全方法(推荐): 仅对游客(未登录用户)显示验证码,已登录用户则无需验证,这样既保证了安全性,又提升了用户体验。
- 直接方法(不推荐): 完全移除验证码功能,此方法会极大降低网站的安全性,容易导致垃圾留言泛滥。
安全方法 - 仅对游客显示验证码(推荐)
这个方法的原理是:在调用验证码图片的代码中,增加一个判断,只有当用户未登录时才显示验证码。

(图片来源网络,侵删)
操作步骤:
-
找到并修改验证码调用文件
打开你的 DedeCMS 安装目录,找到并编辑
plus/guestbook.php文件。 -
定位验证码相关代码
(图片来源网络,侵删)在
guestbook.php文件中,找到大约在第 242 行左右的代码,它看起来是这样的:// 验证码 if(preg_match("/1/",$safe_gdopen)){ $svali = GetCkVdValue(); if(strtolower($vdcode)!=$svali || $svali=='') { ResetVdValue(); ShowMsg('验证码错误!', '-1'); exit(); } }这段代码是验证码的核心逻辑,它检查用户输入的
$vdcode是否与服务器生成的$svali一致。 -
增加登录状态判断
我们需要将这段代码包裹在一个
if条件中,使其只在用户未登录时执行。
(图片来源网络,侵删)修改后的代码如下:
// 验证码 - 仅对未登录用户有效 // 检查用户是否已登录,!isset($cfg_ml->M_ID) 表示用户未登录 if(!isset($cfg_ml->M_ID) && preg_match("/1/",$safe_gdopen)){ $svali = GetCkVdValue(); if(strtolower($vdcode)!=$svali || $svali=='') { ResetVdValue(); ShowMsg('验证码错误!', '-1'); exit(); } }代码解释:
if(!isset($cfg_ml->M_ID) && ...): 这是最关键的一句。$cfg_ml->M_ID是存储当前登录用户ID的变量。!isset($cfg_ml->M_ID)的意思是“$cfg_ml->M_ID这个变量不存在”(即用户未登录),则执行后面的验证码逻辑。&&: 表示“,所以整个条件是“如果用户未登录 系统开启了验证码功能,那么就进行验证码校验”。
-
保存文件
保存
guestbook.php文件。
完成!
当已登录的用户去留言时,将不再需要输入验证码;而游客(未登录用户)仍然需要输入验证码,这可以有效拦截大部分机器人垃圾留言。
直接方法 - 完全移除验证码(不推荐)
此方法会完全禁用验证码功能,网站将完全暴露在垃圾留言的风险下。仅建议在本地测试或对安全性毫不在乎的情况下使用。
操作步骤:
-
找到并修改验证码调用文件
同样,打开
plus/guestbook.php文件。 -
注释或删除验证码代码
找到前面提到的验证码核心代码块(大约在第 242 行),将其完全注释掉(在代码前后加上 )。
/* // 验证码 if(preg_match("/1/",$safe_gdopen)){ $svali = GetCkVdValue(); if(strtolower($vdcode)!=$svali || $svali=='') { ResetVdValue(); ShowMsg('验证码错误!', '-1'); exit(); } } */或者,你也可以直接删除这几行代码。
-
(可选)移除前端输入框
为了彻底移除验证码相关的所有痕迹,你还可以删除留言表单中的验证码输入框。
打开模板文件
plus/guestbook.htm,找到类似下面这样的代码并删除它:<li> <div class="gb_k">验证码:</div> <div class="gb_v"> <input type="text" name="vdcode" id="vdcode" style="width:50px;text-transform:uppercase;" class="text" /> <img id="vdimgck" src="{dede:global.cfg_cmspath/}/include/vdimgck.php" alt="看不清?点击更换" align="absmiddle" style="cursor:pointer" onclick="this.src='{dede:global.cfg_cmspath/}/include/vdimgck.php?'+Math.random();" /> </div> </li> -
保存文件
保存
guestbook.php和guestbook.htm文件。
完成!
任何人在你的网站留言时,都不会再看到和需要输入验证码了。
重要提醒:安全风险与建议
- 垃圾邮件和广告: 移除验证码后,你的留言板会很快被各种垃圾广告、垃圾邮件和无关信息淹没,严重影响网站形象和内容质量。
- 服务器负载: 大量的垃圾留言会增加数据库的写入压力,可能影响网站的整体性能。
- 推荐做法: 如果你的网站需要开放留言,强烈推荐使用“方法一”,这是在用户体验和网站安全之间最好的平衡点,如果垃圾留言依然严重,可以考虑集成一些更高级的反垃圾插件,如 DedeCMS防灌水插件 或使用 Google reCAPTCHA 等服务。
希望这个详细的教程能帮到你!
