目录
钥匙要点
总结
>在您的WordPress评论上自定义CAPTCHA表单可以通过您使用的验证码插件的设置来完成。大多数插件都提供了更改验证码的复杂性,设计和布局的选项。有些人甚至允许您创建自己的自定义验证码。
>

验证验证是否有效,可以防止所有类型的垃圾邮件?

>将CAPTCHA集成不应显着影响站点性能。但是,像任何插件一样,它确实使用了一些资源。如果您注意到放缓,请考虑使用轻巧的验证码插件或以其他方式优化网站的性能。
>我应该多久更新一次验证码插件?
首页 CMS教程 &#&按 将验证验与WordPress注释表格集成

将验证验与WordPress注释表格集成

Feb 18, 2025 am 10:32 AM

将验证验与WordPress注释表格集成

钥匙要点

  • >将验证码与WordPress评论表格集成可以阻止bot提交垃圾邮件评论,节省用于调节和删除这些评论的时间和资源。
  • >
  • >教程演示了如何在插件中使用WordPress HTTP API,将其他表单字段添加到WordPress评论表单中,并验证和利用添加到自定义字段的值。
  • >
  • >如果验证码符号为空,或者用户未能使挑战失败,则在教程中开发的验证码插件包含一个错误消息。它还删除了提交的任何评论,使验证码挑战赛失败。
  • >
  • >教程强调了WordPress评论系统的多功能性,允许用户在注释表格中添加额外的表单字段并通过提到的过滤器和操作来实现任何所需的功能。
  • 多年来,WordPress由于垃圾邮件发送者的越来越受欢迎而成为垃圾邮件发送者的目标。 不幸的是,存在自动化软件的目的是爬网,以搜索使用任何流行平台(例如WordPress)构建的网站,并提交数百甚至数千个垃圾邮件评论。垃圾邮件评论非常烦人,他们在调节和删除它们方面消耗了我们宝贵的时间。
我知道您和我一样讨厌垃圾邮件评论,很想知道如何与他们作战。阻止机器人提交垃圾邮件评论的一种方法是将验证码整合到评论表格上。

在以前的教程中,我们学会了如何将验证码整合到WordPress登录和注册表格中。

>

>以类似的方式,我们现在将通过如何将验证码与WordPress注释系统集成。

> WordPress插件中有许多验证码插件,例如WP-Recaptcha和SecureMimage-WP-Fixed。

本教程的目的是不要创建另一个CAPTCHA插件,而是:>

演示如何在插件中使用WordPress HTTP API。

>如何将其他表单字段包括在WordPress评论表单中。

>

>如何验证和利用添加到自定义字段的值。>

>不进一步的ADO,让我们从插件开发开始。
    >
  1. 插件开发
  2. >首先,前往重新捕获,注册您的域名并抓住您的公共和私人API键。
  3. 包括插件标头。

>创建一个具有三个属性的类,这些属性将存储Recaptcha的私钥和公钥以及验证码错误消息(当验证码表格为空并且用户失败时,会生成错误)。

>

类魔术构造方法将包含两对动作和过滤钩。

>代码说明:首先,我的recaptcha公共密钥和私钥都保存到其类属性。

>将输出recaptcha挑战的CATTCHA_DISPLAY()方法通过comment_form Action添加到注释表格中。

> wp_head操作包括回调函数delete_failed_captcha_comment(),将删除提交的任何评论,以使验证码失败。

过滤器preprocess_comment调用validate_captcha_field()方法,以确保验证码字段不留空并且答案是正确的。

>过滤器remand_post_redirect调用redirect_fail_captcha_comment()以在注释重定向URL中添加一些查询参数。

这是Catcha_display()的代码,它将输出Catpcha挑战。

>此外,它检查当前页URL是否附加了一个查询字符串,并根据redirect_fail_captcha_comment()

设置的$ _get ['catcha']的值显示适当的错误消息。

> validate_captcha_field()的名称意味着通过确保验证码字段没有空且提供的答案是正确的。
<span><span><?php
</span></span><span>
</span><span><span>/*
</span></span><span><span>Plugin Name: Add reCAPTCHA to comment form
</span></span><span><span>Plugin URI: https://www.sitepoint.com
</span></span><span><span>Description: Add Google's reCAPTCHA to WordPress comment form
</span></span><span><span>Version: 1.0
</span></span><span><span>Author: Agbonghama Collins
</span></span><span><span>Author URI: http://w3guy.com
</span></span><span><span>License: GPL2
</span></span><span><span>*/</span></span>
登录后复制
<span>class Captcha_Comment_Form {
</span>
	<span>/** <span>@type string private key|public key */</span>
</span>	<span>private $public_key, $private_key;
</span>
	<span>/** <span>@type string captcha errors */</span>
</span>	<span>private static $captcha_error;</span>
登录后复制
>让我们仔细看看validate_captcha_field(),特别是elseif条件语句,呼叫recaptcha_response()以检查验证码的答案是否正确。

>

以下是recaptcha_response()的代码。
<span>/** class constructor */
</span>	<span>public function __construct() {
</span>
		<span>$this->public_key  = '6Le6d-USAAAAAFuYXiezgJh6rDaQFPKFEi84yfMc';
</span>		<span>$this->private_key = '6Le6d-USAAAAAKvV-30YdZbdl4DVmg_geKyUxF6b';
</span>
		<span>// adds the captcha to the WordPress form
</span>		<span>add_action( 'comment_form', array( $this, 'captcha_display' ) );
</span>                
                <span>// delete comment that fail the captcha challenge
</span>		<span>add_action( 'wp_head', array( $this, 'delete_failed_captcha_comment' ) );
</span>
		<span>// authenticate the captcha answer
</span>		<span>add_filter( 'preprocess_comment', array( $this, 'validate_captcha_field' ) );
</span>
		<span>// redirect location for comment
</span>		<span>add_filter( 'comment_post_redirect', array( $this, 'redirect_fail_captcha_comment' ), 10, 2 );
</span>	<span>}</span>
登录后复制
>

允许我解释recaptcha_response()的工作方式。

>

>带有以下参数。
/** Output the reCAPTCHA form field. */
	public function captcha_display() {
		if ( isset( $_GET['captcha'] ) && $_GET['captcha'] == 'empty' ) {
			echo '<span><span><span><strong</span>></span>ERROR<span><span></strong</span>></span>: CAPTCHA should not be empty';
</span>		} elseif ( isset( $_GET['captcha'] ) && $_GET['captcha'] == 'failed' ) {
			echo '<span><span><span><strong</span>></span>ERROR<span><span></strong</span>></span>: CAPTCHA response was incorrect';
</span>		}

		echo <<<span><span><span><CAPTCHA_FORM</span>
</span></span><span>		<span><style type<span>='text/css'</span>></span><span><span><span>#submit</span> {
</span></span></span><span><span>				<span>display: none;
</span></span></span><span><span>			<span>}</span></span><span><span></style</span>></span>
</span>		<span><span><span><script</span> type<span>="text/javascript"</span>
</span></span><span>		        <span>src<span>="http://www.google.com/recaptcha/api/challenge?k=<span><?= $this->public_key; ?></span>"</span>></span><span>
</span></span><span><span>		</span><span><span></script</span>></span>
</span>		<span><span><span><noscript</span>></span>
</span>			<span><span><span><iframe</span> src<span>="http://www.google.com/recaptcha/api/noscript?k=<span><?= $this->public_key; ?></span>"</span>
</span></span><span>			        <span>height<span>="300"</span> width<span>="300"</span> frameborder<span>="0"</span>></span><span><span></iframe</span>></span>
</span>			<span><span><span><br</span>></span>
</span>			<span><span><span><textarea</span> name<span>="recaptcha_challenge_field"</span> rows<span>="3"</span> cols<span>="40"</span>></span>
</span>			<span><span><span></textarea</span>></span>
</span>			<span><span><span><input</span> type<span>="hidden"</span> name<span>="recaptcha_response_field"</span>
</span></span><span>			       <span>value<span>="manual_challenge"</span>></span>
</span>		<span><span><span></noscript</span>></span>
</span>

		<span><span><span><input</span> name<span>="submit"</span> type<span>="submit"</span> id<span>="submit-alt"</span> tabindex<span>="6"</span> value<span>="Post Comment"</span>/></span>
</span>CAPTCHA_FORM;

	}
登录后复制

privateKey:您的私钥

>

远程IP求解验证码的用户的IP地址。

挑战通过表单发送的的值。
  • >
  • 响应通过表格发送的
  • recaptcha_response_field
  • 的值。
  • >由表格发送的挑战和响应帖子数据分别捕获并保存到$挑战和$响应。 $ _server [“远程_ADDR”]捕获用户的IP地址,然后捕获到$ remote_ip。
  • > wordpress http api以阵列形式以下代码。>
  • recaptcha_post_request()是HTTP API的包装函数,它将接受邮政参数/正文,向recaptcha api提出请求,并返回True,如果通过验证码测试并通过false,则否则。

    >未通过验证码挑战或让字段空的用户发表的任何评论被delete_failed_captcha_comment()

    删除

    最后,我们关闭插件类。
    <span>/**
    </span><span>	 * Add query string to the comment redirect location
    </span><span>	 *
    </span><span>	 * <span>@param $location string location to redirect to after comment
    </span></span><span>	 * <span>@param $comment object comment object
    </span></span><span>	 *
    </span><span>	 * <span>@return <span>string</span>
    </span></span><span>	 */
    </span>	<span>function redirect_fail_captcha_comment( $location, $comment ) {
    </span>
    		<span>if ( ! empty( <span>self::</span>$captcha_error ) ) {
    </span>
    			<span>$args = array( 'comment-id' => $comment->comment_ID );
    </span>
    			<span>if ( <span>self::</span>$captcha_error == 'captcha_empty' ) {
    </span>				<span>$args['captcha'] = 'empty';
    </span>			<span>} elseif ( <span>self::</span>$captcha_error == 'challenge_failed' ) {
    </span>				<span>$args['captcha'] = 'failed';
    </span>			<span>}
    </span>
    			<span>$location = add_query_arg( $args, $location );
    </span>		<span>}
    </span>
    		<span>return $location;
    </span>	<span>}</span>
    登录后复制
    >

    我们完成了编码插件类的编码。要使课堂上班,我们需要像这样实例化:
    <span>/**
    </span><span>	 * Verify the captcha answer
    </span><span>	 *
    </span><span>	 * <span>@param $commentdata object comment object
    </span></span><span>	 *
    </span><span>	 * <span>@return <span>object</span>
    </span></span><span>	 */
    </span>	<span>public function validate_captcha_field( $commentdata ) {
    </span>
    		<span>// if captcha is left empty, set the self::$captcha_error property to indicate so.
    </span>		<span>if ( empty( $_POST['recaptcha_response_field'] ) ) {
    </span>			<span><span>self::</span>$captcha_error = 'captcha_empty';
    </span>		<span>}
    </span>
    		<span>// if captcha verification fail, set self::$captcha_error to indicate so
    </span>		<span>elseif ( $this->recaptcha_response() == 'false' ) {
    </span>			<span><span>self::</span>$captcha_error = 'challenge_failed';
    </span>		<span>}
    </span>
    		<span>return $commentdata;
    </span>	<span>}</span>
    登录后复制
    >

    在激活插件时,将在下面显示的WordPress注释表格中添加验证码。

    将验证验与WordPress注释表格集成

    总结

    在本教程的末尾,您应该能够在评论表格中添加额外的表单字段并实现您希望在评论系统中具有的任何功能,这要归功于提到的过滤器和操作。

    如果您想在WordPress网站上使用插件或深入研究代码,请从Github下载插件。

    直到我再次走,愉快的编码!

    >经常询问有关将验证验与WordPress注释表格集成的问题(常见问题解答)

    >将验证码与WordPress评论表单集成的重要性是什么?首先,它有助于防止垃圾邮件评论,这可能会使您的网站混乱并阻止真正的用户。其次,它增加了额外的安全性,保护您的网站免受机器人和自动脚本的影响。最后,它可以节省您的时间和资源,否则将花费在垃圾邮件评论中进行调节和删除。

    我如何在WordPress评论表单上自定义验证码?

    >在您的WordPress评论上自定义CAPTCHA表单可以通过您使用的验证码插件的设置来完成。大多数插件都提供了更改验证码的复杂性,设计和布局的选项。有些人甚至允许您创建自己的自定义验证码。

    > WordPress评论表单有其他替代方案吗?>是的,WordPress评论表单有几种替代方案。其中包括Akismet,垃圾邮件过滤服务和HoneyPot,一种方法可以通过与隐藏的形式字段进行交互来欺骗bot来揭示自己。

    >我可以在WordPress站点上的其他表单上使用CAPTCHA? 🎜>绝对。可以将CAPTCHA与WordPress站点上的任何表格集成,包括联系表,注册表格和登录表格。这提供了整个网站上的其他安全性和垃圾邮件的预防。

    >

    如果Catpcha在我的WordPress评论表单上不起作用,该怎么办?

    如果Catcha在您的WordPress评论表单上不工作,首先检查以确保插件已正确安装和激活。如果问题持续存在,请尝试清除浏览器缓存或禁用其他插件以查看是否存在冲突。

    >

    我如何使残疾用户更容易获得验证码?可访问,考虑使用音频验证码或基于逻辑的验证码,该验证码要求用户回答一个简单的问题。另外,请确保您的验证码插件符合Web内容可访问性指南(WCAG)。

    >

    验证验证是否有效,可以防止所有类型的垃圾邮件?

    ,而验证码在防止机器人生成的垃圾邮件方面非常有效,但它可能对人类生成的垃圾邮件不那么有效。为此,请考虑使用其他措施,例如评论审核或某些单词或IP地址。

    >是否会将验证码与WordPress注释形式集成到站点性能吗?

    >将CAPTCHA集成不应显着影响站点性能。但是,像任何插件一样,它确实使用了一些资源。如果您注意到放缓,请考虑使用轻巧的验证码插件或以其他方式优化网站的性能。

    我可以在没有插件的情况下将CAPTCHA与WordPress注释表单集成在一起?可以将CAPTCHA与无插件的WordPress注释表单集成在一起,它需要高级编码知识,并且不建议大多数用户使用。使用插件简化了该过程,并确保正确实现了验证码。

    >

    >我应该多久更新一次验证码插件?

    建议每当发布新版本时,建议更新您的验证码插件。这样可以确保您具有最新的安全功能,并且该插件与最新版本的WordPress保持兼容。

    以上是将验证验与WordPress注释表格集成的详细内容。更多信息请关注PHP中文网其他相关文章!

    本站声明
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    热AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智能驱动的应用程序,用于创建逼真的裸体照片

    AI Clothes Remover

    AI Clothes Remover

    用于从照片中去除衣服的在线人工智能工具。

    Undress AI Tool

    Undress AI Tool

    免费脱衣服图片

    Clothoff.io

    Clothoff.io

    AI脱衣机

    Video Face Swap

    Video Face Swap

    使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

    热工具

    记事本++7.3.1

    记事本++7.3.1

    好用且免费的代码编辑器

    SublimeText3汉化版

    SublimeText3汉化版

    中文版,非常好用

    禅工作室 13.0.1

    禅工作室 13.0.1

    功能强大的PHP集成开发环境

    Dreamweaver CS6

    Dreamweaver CS6

    视觉化网页开发工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神级代码编辑软件(SublimeText3)

    如何开始WordPress博客:初学者的分步指南 如何开始WordPress博客:初学者的分步指南 Apr 17, 2025 am 08:25 AM

    博客是人们在网上表达观点、意见和见解的理想平台。许多新手渴望建立自己的网站,却因担心技术障碍或成本问题而犹豫不决。然而,随着平台不断发展以满足初学者的能力和需求,现在开始变得比以往任何时候都更容易。 本文将逐步指导您如何建立一个WordPress博客,从主题选择到使用插件提升安全性和性能,助您轻松创建自己的网站。 选择博客主题和方向 在购买域名或注册主机之前,最好先确定您计划涵盖的主题。个人网站可以围绕旅行、烹饪、产品评论、音乐或任何激发您兴趣的爱好展开。专注于您真正感兴趣的领域可以鼓励持续写作

    wordpress文章列表怎么调 wordpress文章列表怎么调 Apr 20, 2025 am 10:48 AM

    有四种方法可以调整 WordPress 文章列表:使用主题选项、使用插件(如 Post Types Order、WP Post List、Boxy Stuff)、使用代码(在 functions.php 文件中添加设置)或直接修改 WordPress 数据库。

    如何在父分类的存档页面上显示子分类 如何在父分类的存档页面上显示子分类 Apr 19, 2025 pm 11:54 PM

    您想了解如何在父分类存档页面上显示子分类吗?在自定义分类存档页面时,您可能需要执行此操作,以使其对访问者更有用。在本文中,我们将向您展示如何在父分类存档页面上轻松显示子分类。为什么在父分类存档页面上显示子分类?通过在父分类存档页面上显示所有子分类,您可以使其不那么通用,对访问者更有用。例如,如果您运行一个关于书籍的WordPress博客,并且有一个名为“主题”的分类法,那么您可以添加“小说”、“非小说”等子分类法,以便您的读者可以

    如何在 WordPress 中获取登录用户信息以获得个性化结果 如何在 WordPress 中获取登录用户信息以获得个性化结果 Apr 19, 2025 pm 11:57 PM

    最近,我们向您展示了如何通过允许用户将自己喜欢的帖子保存在个性化库中来为用户创建个性化体验。您可以通过在某些地方(即欢迎屏幕)使用他们的名字,将个性化结果提升到另一个水平。幸运的是,WordPress使获取登录用户的信息变得非常容易。在本文中,我们将向您展示如何检索与当前登录用户相关的信息。我们将利用get_currentuserinfo(); 功能。这可以在主题中的任何地方使用(页眉、页脚、侧边栏、页面模板等)。为了使其工作,用户必须登录。因此我们需要使用

    如何在 WordPress 中按帖子过期日期对帖子进行排序 如何在 WordPress 中按帖子过期日期对帖子进行排序 Apr 19, 2025 pm 11:48 PM

    过去,我们分享过如何使用PostExpirator插件使WordPress中的帖子过期。好吧,在创建活动列表网站时,我们发现这个插件非常有用。我们可以轻松删除过期的活动列表。其次,多亏了这个插件,按帖子过期日期对帖子进行排序也非常容易。在本文中,我们将向您展示如何在WordPress中按帖子过期日期对帖子进行排序。更新了代码以反映插件中更改自定义字段名称的更改。感谢Tajim在评论中让我们知道。在我们的特定项目中,我们将事件作为自定义帖子类型。现在

    对于初学者来说,WordPress容易吗? 对于初学者来说,WordPress容易吗? Apr 03, 2025 am 12:02 AM

    WordPress对初学者来说容易上手。1.登录后台后,用户界面直观,简洁的仪表板提供所有必要功能链接。2.基本操作包括创建和编辑内容,所见即所得的编辑器简化了内容创建。3.初学者可以通过插件和主题扩展网站功能,学习曲线存在但可以通过实践掌握。

    如何在 WordPress 中显示查询数量和页面加载时间 如何在 WordPress 中显示查询数量和页面加载时间 Apr 19, 2025 pm 11:51 PM

    我们的一位用户询问其他网站如何在页脚中显示查询数量和页面加载时间。您经常会在网站的页脚中看到这一点,它可能会显示类似以下内容:“1.248秒内64个查询”。在本文中,我们将向您展示如何在WordPress中显示查询数量和页面加载时间。只需将以下代码粘贴到主题文件中您喜欢的任何位置(例如footer.php)。queriesin

    如何使用 IFTTT 自动化 WordPress 和社交媒体(及更多) 如何使用 IFTTT 自动化 WordPress 和社交媒体(及更多) Apr 18, 2025 am 11:27 AM

    您是否正在寻找自动化 WordPress 网站和社交媒体帐户的方法? 通过自动化,您将能够在 Facebook、Twitter、LinkedIn、Instagram 等平台上自动分享您的 WordPress 博客文章或更新。 在本文中,我们将向您展示如何使用 IFTTT、Zapier 和 Uncanny Automator 轻松实现 WordPress 和社交媒体的自动化。 为什么要自动化 WordPress 和社交媒体? 自动化您的WordPre

    See all articles