Mengintegrasikan Captcha dengan Borang Komen WordPress
- Mengintegrasikan CAPTCHA dengan borang komen WordPress boleh menghalang bot daripada mengemukakan komen spam, menjimatkan masa dan sumber yang dibelanjakan untuk menyederhanakan dan memadam komen -komen ini.
- Tutorial menunjukkan cara menggunakan API HTTP WordPress dalam plugin, tambahkan medan borang tambahan ke borang komen WordPress, dan sahkan dan gunakan nilai yang ditambahkan ke medan tersuai. Plugin CAPTCHA yang dibangunkan dalam tutorial termasuk mesej ralat jika borang CAPTCHA dibiarkan kosong atau jika pengguna gagal cabaran. Ia juga memadam sebarang komen yang dikemukakan yang gagal Catcha Challenge.
- Tutorial menekankan fleksibiliti sistem komen WordPress, yang membolehkan pengguna menambah bidang bentuk tambahan ke borang komen dan melaksanakan ciri -ciri yang dikehendaki berkat penapis dan tindakan yang disebutkan.
- Selama bertahun -tahun, WordPress telah menjadi sasaran untuk spammer kerana ia semakin popular.
- Komen spam sangat menjengkelkan, mereka memakan masa berharga kami ketika datang untuk menyederhanakan dan memadamnya.
Saya tahu anda membenci komen spam seperti yang saya lakukan dan ingin tahu bagaimana untuk memerangi mereka. Salah satu cara menghalang bot dari mengemukakan komen spam adalah dengan mengintegrasikan captcha ke borang komen.
Dalam tutorial sebelumnya, kami belajar bagaimana mengintegrasikan Captchas ke borang log masuk dan pendaftaran WordPress.
Dalam fesyen yang sama, kami akan berjalan melalui cara mengintegrasikan CAPTCHA dengan sistem komen WordPress.
Terdapat banyak plugin CAPTCHA yang terdapat dalam direktori plugin WordPress seperti WP-Recaptcha dan Securimage-WP-Fixed.
Tujuan tutorial ini adalah untuk tidak membuat plugin Captcha yang lain tetapi:
Tunjukkan bagaimana API HTTP WordPress boleh digunakan dalam plugin.
bagaimana memasukkan medan borang tambahan ke borang komen WordPress.
- bagaimana untuk mengesahkan dan menggunakan nilai yang ditambahkan ke medan tersuai.
- Tanpa berlengah lagi, mari kita mulakan dengan pembangunan plugin.
- Pembangunan plugin
Pertama, pergi ke Recaptcha, daftar nama domain anda dan ambil kunci API awam dan swasta anda.
Sertakan tajuk plugin.
Buat kelas dengan tiga sifat yang akan menyimpan kunci peribadi & awam Recaptcha serta mesej ralat CAPTCHA (ralat dihasilkan apabila borang CAPTCHA dibiarkan kosong dan pengguna gagal cabaran).
Kaedah Pembina Magic Kelas akan mengandungi dua pasang tindakan dan cangkuk penapis.
<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>
Kod Penjelasan: Pertama, kunci awam dan peribadi saya diselamatkan ke sifat kelas mereka.
<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>
kaedah captcha_display () yang akan mengeluarkan cabaran recaptcha ditambah ke borang komen oleh tindakan Comment_Form.
Tindakan WP_HEAD termasuk fungsi panggil balik delete_failed_captcha_comment () yang akan memadamkan sebarang komen yang dikemukakan yang gagal cabaran CAPTCHA.
preprocess_comment penapis memanggil kaedah validate_captcha_field () untuk memastikan medan CAPTCHA tidak dibiarkan kosong dan juga jawapannya.
penapis COMMENT_POST_REDIRECT CALL REDIRECT_FAIL_CAPTCHA_COMMENT () untuk menambah beberapa parameter pertanyaan ke url pengalihan komen.di sini adalah kod untuk captcha_display () yang akan mengeluarkan cabaran captcha.
Selain itu, periksa jika terdapat rentetan pertanyaan yang dilampirkan pada url halaman semasa dan paparkan mesej ralat yang sesuai bergantung pada nilai $ _get ['captcha'] yang ditetapkan oleh redirect_fail_captcha_comment ()
<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>
<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>
di bawah adalah kod untuk 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; }
Permintaan pos dihantar ke titik akhir http://www.google.com/recaptcha/api/verify dengan parameter berikut.
- PrivateKey: Kunci peribadi anda
- Remoteip alamat IP pengguna yang menyelesaikan Captcha.
- mencabar nilai
- recaptcha_challenge_field dihantar melalui borang. Respons Nilai
- recaptcha_response_field dihantar melalui borang.
wordpress http api parameter pos untuk berada dalam bentuk array maka kod di bawah.
<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>
Mana -mana komen yang dibuat oleh pengguna yang gagal cabaran captcha atau meninggalkan medan kosong Dapatkan dipadam oleh delete_failed_captcha_comment ()
<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>
Akhirnya, kami menutup kelas plugin.
<span>/** </span><span> * Get the reCAPTCHA API response. </span><span> * </span><span> * <span>@return <span>string</span> </span></span><span> */ </span> <span>public function recaptcha_response() { </span> <span>// reCAPTCHA challenge post data </span> <span>$challenge = isset( $_POST['recaptcha_challenge_field'] ) ? esc_attr( $_POST['recaptcha_challenge_field'] ) : ''; </span> <span>// reCAPTCHA response post data </span> <span>$response = isset( $_POST['recaptcha_response_field'] ) ? esc_attr( $_POST['recaptcha_response_field'] ) : ''; </span> <span>$remote_ip = $_SERVER["REMOTE_ADDR"]; </span> <span>$post_body = array( </span> <span>'privatekey' => $this->private_key, </span> <span>'remoteip' => $remote_ip, </span> <span>'challenge' => $challenge, </span> <span>'response' => $response </span> <span>); </span> <span>return $this->recaptcha_post_request( $post_body ); </span> <span>}</span>
Kami selesai mengodkan kelas plugin. Untuk meletakkan kelas berfungsi, kita perlu memberi instantiasi seperti itu:
<span>$post_body = array( </span> <span>'privatekey' => $this->private_key, </span> <span>'remoteip' => $remote_ip, </span> <span>'challenge' => $challenge, </span> <span>'response' => $response </span> <span>); </span> <span>return $this->recaptcha_post_request( $post_body );</span>
Pada pengaktifan plugin, captcha akan ditambah ke borang komen WordPress seperti yang ditunjukkan di bawah.
<span>/** </span><span> * Send HTTP POST request and return the response. </span><span> * </span><span> * <span>@param $post_body array HTTP POST body </span></span><span> * </span><span> * <span>@return <span>bool</span> </span></span><span> */ </span> <span>public function recaptcha_post_request( $post_body ) { </span> <span>$args = array( 'body' => $post_body ); </span> <span>// make a POST request to the Google reCaptcha Server </span> <span>$request = wp_remote_post( 'https://www.google.com/recaptcha/api/verify', $args ); </span> <span>// get the request response body </span> <span>$response_body = wp_remote_retrieve_body( $request ); </span> <span>/** </span><span> * explode the response body and use the request_status </span><span> * <span>@see https://developers.google.com/recaptcha/docs/verify </span></span><span> */ </span> <span>$answers = explode( "\n", $response_body ); </span> <span>$request_status = trim( $answers[0] ); </span> <span>return $request_status; </span> <span>}</span>

Bungkus
Pada akhir tutorial ini, anda harus dapat menambah bidang bentuk tambahan ke borang komen dan melaksanakan hampir apa -apa ciri yang anda ingin ada dalam sistem komen berkat penapis dan tindakan yang disebutkan.
Jika anda ingin menggunakan plugin di laman WordPress anda atau untuk mengkaji kod yang mendalam, muat turun plugin dari GitHub.sehingga saya datang lagi, pengekodan gembira!
Soalan Lazim (Soalan Lazim) Mengenai Mengintegrasikan Captcha dengan Borang Komen WordPress
Apakah kepentingan mengintegrasikan CAPTCHA dengan borang komen WordPress? Pertama, ia membantu untuk mencegah komen spam, yang boleh merosakkan laman web anda dan menghalang pengguna yang tulen. Kedua, ia menambah lapisan keselamatan tambahan, melindungi tapak anda dari bot dan skrip automatik. Akhir sekali, ia menjimatkan masa dan sumber anda yang akan dibelanjakan untuk menyederhanakan dan memadam komen spam.
Bagaimana saya boleh menyesuaikan captcha pada borang komen WordPress saya? Borang boleh dilakukan melalui tetapan plugin Captcha yang anda gunakan. Kebanyakan plugin menawarkan pilihan untuk menukar kerumitan, reka bentuk, dan susun atur CAPTCHA. Ada juga yang membolehkan anda membuat captcha tersuai anda sendiri. Ini termasuk akismet, perkhidmatan penapisan spam, dan honeypot, kaedah yang menipu bot untuk mendedahkan diri mereka dengan berinteraksi dengan medan bentuk tersembunyi. 🎜> benar -benar. CAPTCHA boleh diintegrasikan dengan apa -apa bentuk di laman WordPress anda, termasuk borang hubungan, borang pendaftaran, dan borang log masuk. Ini memberikan keselamatan tambahan dan pencegahan spam di seluruh laman web anda. Periksa pertama untuk memastikan plugin dipasang dan diaktifkan dengan betul. Sekiranya masalah berterusan, cuba membersihkan cache penyemak imbas anda atau melumpuhkan plugin lain untuk melihat apakah terdapat konflik. Boleh diakses, pertimbangkan untuk menggunakan audio captcha atau captcha berasaskan logik, yang meminta pengguna menjawab soalan mudah. Juga, pastikan plugin CAPTCHA anda mematuhi Garis Panduan Kebolehcapaian Kandungan Web (WCAG).
adalah CAPTCHA berkesan terhadap semua jenis spam? Untuk ini, pertimbangkan untuk menggunakan langkah -langkah tambahan seperti kesederhanaan komen atau menyenaraikan kata -kata tertentu atau alamat IP. tidak boleh menjejaskan prestasi tapak. Walau bagaimanapun, seperti mana -mana plugin, ia menggunakan beberapa sumber. Sekiranya anda melihat kelembapan, pertimbangkan untuk menggunakan plugin Captcha yang ringan atau mengoptimumkan prestasi laman web anda dengan cara lain. Mungkin untuk mengintegrasikan Captcha dengan borang komen WordPress tanpa plugin, ia memerlukan pengetahuan pengekodan lanjutan dan tidak disyorkan untuk kebanyakan pengguna. Menggunakan plugin memudahkan proses dan memastikan bahawa CAPTCHA dilaksanakan dengan betul. Ini memastikan bahawa anda mempunyai ciri keselamatan terkini dan plugin tetap bersesuaian dengan versi terkini WordPress.
Atas ialah kandungan terperinci Mengintegrasikan Captcha dengan Borang Komen WordPress. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Baru -baru ini, kami menunjukkan kepada anda bagaimana untuk mencipta pengalaman peribadi untuk pengguna dengan membenarkan pengguna menyimpan jawatan kegemaran mereka di perpustakaan yang diperibadikan. Anda boleh mengambil hasil yang diperibadikan ke tahap yang lain dengan menggunakan nama mereka di beberapa tempat (iaitu, skrin selamat datang). Nasib baik, WordPress menjadikannya sangat mudah untuk mendapatkan maklumat mengenai pengguna log masuk. Dalam artikel ini, kami akan menunjukkan kepada anda bagaimana untuk mendapatkan maklumat yang berkaitan dengan pengguna yang sedang dilog masuk. Kami akan menggunakan get_currentuserInfo (); fungsi. Ini boleh digunakan di mana sahaja dalam tema (header, footer, sidebar, template halaman, dll.). Agar ia berfungsi, pengguna mesti dilog masuk. Oleh itu, kita perlu menggunakan

Terdapat empat cara untuk menyesuaikan senarai artikel WordPress: Gunakan pilihan tema, gunakan plugin (seperti pesanan jenis pos, senarai pos WP, barangan boxy), gunakan kod (tambah tetapan dalam fail fungsi.php), atau ubah suai pangkalan data WordPress secara langsung.

Blog adalah platform yang ideal untuk orang ramai untuk menyatakan pendapat, pendapat dan pendapat mereka dalam talian. Ramai pemula bersemangat untuk membina laman web mereka sendiri tetapi teragak -agak untuk bimbang tentang halangan teknikal atau isu kos. Walau bagaimanapun, apabila platform terus berkembang untuk memenuhi keupayaan dan keperluan pemula, kini mula menjadi lebih mudah dari sebelumnya. Artikel ini akan membimbing anda langkah demi langkah bagaimana untuk membina blog WordPress, dari pemilihan tema untuk menggunakan plugin untuk meningkatkan keselamatan dan prestasi, membantu anda membuat laman web anda dengan mudah. Pilih topik dan arah blog Sebelum membeli nama domain atau mendaftarkan tuan rumah, sebaiknya mengenal pasti topik yang anda rancangkan. Laman web peribadi boleh berputar di sekitar perjalanan, memasak, ulasan produk, muzik atau hobi yang mencetuskan minat anda. Memfokuskan pada bidang yang anda benar -benar berminat dapat menggalakkan penulisan berterusan

Adakah anda ingin tahu cara memaparkan kategori kanak -kanak di halaman arkib kategori induk? Apabila anda menyesuaikan halaman arkib klasifikasi, anda mungkin perlu melakukan ini untuk menjadikannya lebih berguna kepada pelawat anda. Dalam artikel ini, kami akan menunjukkan kepada anda bagaimana untuk memaparkan kategori kanak -kanak dengan mudah di halaman arkib kategori induk. Mengapa subkategori muncul di halaman arkib kategori induk? Dengan memaparkan semua kategori kanak -kanak di halaman arkib kategori induk, anda boleh menjadikannya kurang generik dan lebih berguna kepada pelawat. Sebagai contoh, jika anda menjalankan blog WordPress mengenai buku dan mempunyai taksonomi yang disebut "tema", anda boleh menambah sub-taksonomi seperti "novel", "bukan fiksyen" supaya pembaca anda dapat

Pada masa lalu, kami telah berkongsi cara menggunakan plugin postexpirator untuk tamat tempoh di WordPress. Nah, apabila membuat laman web Senarai Aktiviti, kami mendapati plugin ini sangat berguna. Kami boleh memadamkan senarai aktiviti yang telah tamat tempoh dengan mudah. Kedua, terima kasih kepada plugin ini, ia juga sangat mudah untuk menyusun jawatan dengan tarikh tamat tempoh. Dalam artikel ini, kami akan menunjukkan kepada anda bagaimana untuk menyusun jawatan melalui tarikh tamat tempoh di WordPress. Kod yang dikemas kini untuk mencerminkan perubahan dalam plugin untuk menukar nama medan tersuai. Terima kasih Tajim kerana memberitahu kami dalam komen. Dalam projek khusus kami, kami menggunakan acara sebagai jenis pos tersuai. Sekarang

Adakah anda mencari cara untuk mengautomasikan laman web WordPress dan akaun media sosial anda? Dengan automasi, anda akan dapat berkongsi catatan blog atau kemas kini secara automatik di Facebook, Twitter, LinkedIn, Instagram dan banyak lagi. Dalam artikel ini, kami akan menunjukkan kepada anda bagaimana untuk mengautomasikan WordPress dan media sosial dengan mudah menggunakan IFTTT, Zapier, dan Automator Uncanny. Mengapa mengautomasikan WordPress dan media sosial? Automatikkan WordPre anda

Untuk membina laman web menggunakan hos WordPress, anda perlu: pilih penyedia hosting yang boleh dipercayai. Beli nama domain. Sediakan akaun hosting WordPress. Pilih topik. Tambah halaman dan artikel. Pasang pemalam. Sesuaikan laman web anda. Menerbitkan laman web anda.

Salah satu pengguna kami meminta laman web lain bagaimana untuk memaparkan bilangan pertanyaan dan masa pemuatan halaman di footer. Anda sering melihat ini di kaki laman web anda, dan ia mungkin memaparkan sesuatu seperti: "64 pertanyaan dalam 1.248 saat". Dalam artikel ini, kami akan menunjukkan kepada anda bagaimana untuk memaparkan bilangan pertanyaan dan masa pemuatan halaman di WordPress. Cukup tampal kod berikut di mana sahaja yang anda suka dalam fail tema (mis. Footer.php). pertanyaan
