运营网站时,垃圾评论和恶意留言常常令人头疼。它们不仅影响用户体验,还可能占用服务器资源,甚至降低网站的专业形象。幸运的是,安企CMS内置了验证码功能,可以帮助我们有效过滤这些不速之客,让网站环境更加清朗。

下面,我们将一同了解如何在网站的评论和留言表单中启用并正确显示验证码功能。

第一步:在后台开启验证码功能

首先,我们需要前往网站后台的管理界面。在左侧导航栏找到“功能管理”,然后根据您的需求,选择进入“网站留言管理”或“内容评论管理”。这两个模块通常会有一个相似的配置项。

进入相应管理页面后,您会看到一个名为“是否开启验证码”或类似字样的选项。将其勾选为启用状态,并保存设置。

这一步至关重要,它告诉安企CMS的后端系统,需要在处理评论或留言提交时进行验证码检查。如果没有在后台开启,即使前端添加了显示验证码的代码,验证码也无法正常工作,因为后端不会对其进行验证。

第二步:修改网站模板文件以显示验证码

接下来,我们需要修改网站的前端模板文件,以便在用户提交表单时能够看到并输入验证码。通常,留言表单位于您的模板目录下的 guestbook/index.html 文件中,而评论表单则可能在文章或产品详情页的模板(例如 archive/detail.htmlproduct/detail.html)内,或者专门的评论列表模板(comment/list.html)中。

找到您想要添加验证码的表单,并在提交按钮附近添加以下HTML和JavaScript代码。这段代码主要包含三个部分:一个隐藏的输入框用于存储验证码ID,一个文本输入框供用户填写验证码,以及一个图片标签用于显示验证码图像。

<div style="display: flex; clear: both; align-items: center; margin-bottom: 15px;">
  <input type="hidden" name="captcha_id" id="captcha_id">
  <input type="text" name="captcha" required placeholder="请填写验证码" style="flex: 1; padding: 10px; border: 1px solid #ccc; margin-right: 10px; border-radius: 4px;">
  <img src="" id="get-captcha" style="width: 150px; height: 40px; cursor: pointer; border: 1px solid #eee; border-radius: 4px;" alt="验证码">
</div>

<script>
  // 获取验证码的函数
  function fetchCaptcha() {
    fetch('/api/captcha')
      .then(response => response.json())
      .then(res => {
        if (res.code === 0 && res.data) {
          document.getElementById('captcha_id').setAttribute("value", res.data.captcha_id);
          document.getElementById('get-captcha').setAttribute("src", res.data.captcha);
        } else {
          console.error('获取验证码失败:', res.msg);
        }
      })
      .catch(err => {
        console.error('请求验证码接口出错:', err);
      });
  }

  // 页面加载完成后立即获取一次验证码
  document.addEventListener('DOMContentLoaded', function() {
    fetchCaptcha();
  });

  // 点击验证码图片时刷新验证码
  document.getElementById('get-captcha').addEventListener("click", function () {
    fetchCaptcha();
  });
</script>

如果您在网站中使用了jQuery库,也可以采用以下更简洁的jQuery写法:

<div style="display: flex; clear: both; align-items: center; margin-bottom: 15px;">
  <input type="hidden" name="captcha_id" id="captcha_id">
  <input type="text" name="captcha" required placeholder="请填写验证码" style="flex: 1; padding: 10px; border: 1px solid #ccc; margin-right: 10px; border-radius: 4px;">
  <img src="" id="get-captcha" style="width: 150px; height: 40px; cursor: pointer; border: 1px solid #eee; border-radius: 4px;" alt="验证码">
</div>

<script>
  // jQuery 调用方式
  function fetchCaptchaWithJquery() {
    $.get('/api/captcha', function(res) {
      if (res.code === 0 && res.data) {
        $('#captcha_id').attr("value", res.data.captcha_id);
        $('#get-captcha').attr("src", res.data.captcha);
      } else {
        console.error('获取验证码失败:', res.msg);
      }
    }, 'json').fail(function(jqXHR, textStatus, errorThrown) {
      console.error('请求验证码接口出错:', textStatus, errorThrown);
    });
  }

  $(document).ready(function() {
    fetchCaptchaWithJquery(); // 页面加载后获取验证码
    $('#get-captcha').on("click", function () {
      fetchCaptchaWithJquery(); // 点击图片刷新验证码
    });
  });
</script>

这段JavaScript代码负责在页面加载时和每次用户点击验证码图片时,向 /api/captcha 接口发起请求,获取新的验证码图片和对应的ID。然后,它会将获取到的验证码图片显示在 <img> 标签中,并将验证码ID填充到隐藏的 captcha_id 输入框内。用户填写验证码后,系统会用这个ID来验证输入是否正确。为了让验证码图片和输入框看起来更协调,上面示例中已经提供了一些基本的CSS样式,您可以根据网站的整体风格进行调整和美化。

将上述代码片段正确放置在您的评论或留言 <form> 标签内部,并确保 captcha_idcaptchaget-captcha 等元素的ID在您的模板中是唯一的,以免造成冲突。

通过以上两步简单的设置,您的安企CMS网站就能够有效地在评论和留言表单中启用验证码功能了。这不仅能够显著减少垃圾信息的骚扰,保护网站内容的纯净,还能提升整体的运营效率。良好的用户体验和网站安全是并行的,验证码正是平衡这两者的有效工具。


常见问题 (FAQ)

1. 问:为什么我按照步骤操作了,验证码图片却无法显示?

答:这可能是由几个原因造成的。首先,请再次确认您是否在安企CMS后台的“功能管理”中,针对“网站留言管理”或“内容评论管理”勾选并保存了“是否开启验证码”选项。其次,检查浏览器控制台(通常按F12打开)是否有任何网络请求失败(404或500错误)或JavaScript错误。确认您的网站可以通过 /api/captcha 路径访问到验证码接口,并且它返回的数据格式是正确的。最后,也要检查您添加的CSS样式是否意外地隐藏了验证码图片。

2. 问:我启用了验证码,但还是有垃圾评论提交,这是怎么回事?

答:验证码能有效过滤绝大部分自动化、低级形式的垃圾信息机器人。然而,对于一些更高级的机器人,或者通过人工操作发布的垃圾评论,验证码可能无法完全阻止。在这种情况下,您可以考虑结合安企CMS的其他内容安全功能,如敏感词过滤、人工审核机制,或者设置评论提交频率限制,以进一步增强防范效果。

3. 问:我可以更改验证码的显示样式或更换为其他类型的验证码吗?

答:安企CMS内置的验证码功能通常提供一种默认的图片