首頁 > CMS教程 > &#&按 > 將驗證驗與WordPress註釋表格集成

將驗證驗與WordPress註釋表格集成

尊渡假赌尊渡假赌尊渡假赌
發布: 2025-02-18 10:32:38
原創
747 人瀏覽過

將驗證驗與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
    熱門教學
    更多>
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板