Heim >CMS-Tutorial >WordDrücken Sie >Integration eines Captcha in das WordPress -Anmeldeformular
Dieses Tutorial zeigt, ein WordPress -Plugin zu erstellen, das Google Recaptcha in das WordPress -Anmeldesystem integriert. Das Plugin verwendet die HTTP -API, um eine Postanforderung an Recaptcha zu senden, wobei Benutzer captcha -Antworten validiert.
Die Plugin -Entwicklung beinhaltet das Erstellen einer PHP -Klasse mit Eigenschaften für Recaptcha -Schlüssel, das Hinzufügen der Captcha zum Anmeldeformular und die Validierung der Antworten. Der Code zeigt, wie eine Postanforderung mit den erforderlichen Parametern an https://www.google.com/recaptcha/api/verify
sendet. Dies verbessert die Sicherheit der Website, indem Menschen von Bots unterschieden werden, wodurch nicht autorisierte Zugriffsversuche verhindern.
In einem früheren Tutorial wurde die WordPress HTTP -API untersucht. Dieses Tutorial baut darauf auf und zeigt den API -Konsum innerhalb eines WordPress -Plugins. Wir haben zuvor ein Domain Whois und Social Data WordPress -Widget mit der HTTP -API erstellt.
unten finden Sie einen Screenshot des WordPress -Anmeldeformulars mit dem integrierten Captcha:
Plugin -Entwicklung
Vor dem Codieren registrieren Sie Ihre Domain auf Recaptcha und erhalten Sie Ihre öffentlichen und privaten API -Schlüssel.
1. Plugin -Header:
<code class="language-php"><?php /* Plugin Name: WP Login Form with reCAPTCHA Plugin URI: https://www.sitepoint.com Description: Adds Google's reCAPTCHA to WordPress Login Version: 1.0 Author: Agbonghama Collins Author URI: http://w3guy.com License: GPL2 */</code>
2. PHP -Klasse:
Erstellen Sie eine PHP -Klasse zum Speichern von Recaptcha -Tasten:
<code class="language-php">class reCAPTCHA_Login_Form { private $public_key, $private_key; public function __construct() { $this->public_key = '6Le6d-USAAAAAFuYXiezgJh6rDaQFPKFEi84yfMc'; $this->private_key = '6Le6d-USAAAAAKvV-30YdZbdl4DVmg_geKyUxF6b'; add_action( 'login_form', array( $this, 'captcha_display' ) ); add_action( 'wp_authenticate_user', array( $this, 'validate_captcha_field' ), 10, 2 ); } public function captcha_display() { ?> <noscript> <iframe src="https://www.google.com/recaptcha/api/noscript?k=<?=%24this->public_key?>" height="300" width="300" frameborder="0"></iframe><br><br> <textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea> <input type="hidden" name="recaptcha_response_field" value="manual_challenge"> </noscript> <?php } public function validate_captcha_field($user, $password) { if ( ! isset( $_POST['recaptcha_response_field'] ) || empty( $_POST['recaptcha_response_field'] ) ) { return new WP_Error( 'empty_captcha', 'CAPTCHA cannot be empty' ); } if( isset( $_POST['recaptcha_response_field'] ) && $this->recaptcha_response() === 'false' ) { return new WP_Error( 'invalid_captcha', 'Incorrect CAPTCHA response' ); } return $user; } public function recaptcha_response() { $challenge = isset($_POST['recaptcha_challenge_field']) ? esc_attr($_POST['recaptcha_challenge_field']) : ''; $response = isset($_POST['recaptcha_response_field']) ? esc_attr($_POST['recaptcha_response_field']) : ''; $remote_ip = $_SERVER["REMOTE_ADDR"]; $post_body = array( 'privatekey' => $this->private_key, 'remoteip' => $remote_ip, 'challenge' => $challenge, 'response' => $response ); return $this->recaptcha_post_request( $post_body ); } public function recaptcha_post_request( $post_body ) { $args = array( 'body' => $post_body ); $request = wp_remote_post( 'https://www.google.com/recaptcha/api/verify', $args ); $response_body = wp_remote_retrieve_body( $request ); $answers = explode( "\n", $response_body ); $request_status = trim( $answers[0] ); return $request_status; } } new reCAPTCHA_Login_Form();</code>
3. Plugin -Instanziierung:
endlich die Klasse instanziieren:
<code class="language-php">new reCAPTCHA_Login_Form();</code>
Dies vervollständigt den Plugin -Code. Laden Sie das komplette Plugin zum Gebrauch oder weitere Untersuchung herunter. Dies ist Teil einer Serie, die WordPress HTTP -API -Verwendung in Plugins zeigt.
(FAQS-Abschnitt für die Kürze entfernt, da es für Pseudooriginalität nicht neu geschrieben werden muss. Der Inhalt ist sachlich und erfordert keine Änderung.)
Das obige ist der detaillierte Inhalt vonIntegration eines Captcha in das WordPress -Anmeldeformular. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!