Sahte Form Girişlerini Durdurun: WordPress İçin E-posta Kontrolü
İletişim formları yazım hataları, geçici adresler ve bot girişleri toplar. Contact Form 7 ya da herhangi bir WordPress formuna birkaç satırda e-posta kontrolü ekleyin.
İletişim ya da bülten formu olan her WordPress sitesinde aynı yığın birikir: [email protected], gmial.com yazım hataları, geçici kutular ve alana rastgele metin dolduran botlar. Asla cevaplayamayacağınız mesajlar yalnızca kalabalık değildir; bir e-posta listesine girerlerse sonradan geri dönmeye dönüşürler. Durdurmak için en iyi an formun kendisidir.
1. Seviye: Temelleri tarayıcıya yaptırın
Telefonlar doğru klavyeyi göstersin ve tarayıcı @ işaretsiz metni reddetsin diye email türünde bir girdi kullanın. required ekleyin. Tek başına en tembel çöpü eler. Contact Form 7 bunu [email* your-email] etiketiyle yapar.
2. Seviye: İnsanları rahatsız etmeden botları yakalayın
- Bal tuzağı alanı. İnsanların boş bıraktığı, botların doldurduğu gizli bir alan. Birçok form eklentisi içerir.
- Süre kontrolü. Yüklendikten bir saniye içinde gönderilen formu reddedin.
- Gizlilik dostu bir CAPTCHA, bot trafiği yoğunsa.
Bunlar otomatik gönderimleri durdurur ama gmial.com yazan gerçek bir insanı değil. Bunun için gerçek bir adres kontrolü gerekir.
3. Seviye: Adresin kendisini kontrol edin
API'miz tek bir adresi kontrol eder ve valid, invalid, risky ya da unknown sonucu verir; ayrıca geçici alan adı işareti ve alan adı yazım hatasına benziyorsa bir typo_suggestion döndürür. Hesabınızda bir API anahtarı oluşturun ve anahtarı sayfada değil, sunucuda saklayın.
Contact Form 7 örneği
Bunu temanızın functions.php dosyasına ya da küçük bir site eklentisine ekleyin. Açıkça geçersiz ve geçici adresleri reddeder, geri kalanını geçirir; böylece geçici bir kesinti gerçek bir müşteriyi asla engellemez.
add_filter( 'wpcf7_validate_email*', function ( $result, $tag ) {
$email = isset( $_POST[ $tag->name ] ) ? sanitize_email( wp_unslash( $_POST[ $tag->name ] ) ) : '';
if ( ! $email ) { return $result; }
$response = wp_remote_get(
'https://mailcut.io/api/v1/verify?email=' . rawurlencode( $email ),
array( 'timeout' => 6, 'headers' => array( 'Authorization' => 'Bearer ' . MAILCUT_API_KEY ) )
);
if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) {
return $result; // hata durumunda geçir: servis sorununda kimseyi engelleme
}
$data = json_decode( wp_remote_retrieve_body( $response ), true );
if ( ! empty( $data['typo_suggestion'] ) ) {
$result->invalidate( $tag, 'Bunu mu demek istediniz: ' . $data['typo_suggestion'] . '?' );
} elseif ( 'invalid' === ( $data['result'] ?? '' ) || ! empty( $data['disposable'] ) ) {
$result->invalidate( $tag, 'Lütfen yanıtımızı alabileceğiniz bir e-posta adresi kullanın.' );
}
return $result;
}, 20, 2 );
MAILCUT_API_KEY sabitini wp-config.php içinde tanımlayın; anahtar tema dosyalarınızın dışında kalsın. Her çağrı bir kontör harcar.
Koddan daha önemli kararlar
- Hata durumunda geçirin. Kontrol çalışamıyorsa girişi kabul edin. Kaybedilen bir müşteri, birkaç kötü adresten pahalıdır.
- "Riskli" ve "belirsiz"e nazik davranın. Birçok kurumsal alan adı her şeyi kabul eder ve bazı sunucular zamanında cevap vermez. Kabul edin ama CRM'inizde işaretleyin.
- Reddi açıklayın. "Bunu mu demek istediniz …?" gibi bir mesaj yazım hatasını başarılı bir gönderime çevirir.
- Her tuş vuruşunda kontrol etmeyin. Gönderirken tek çağrı yeter ve daha az kontör harcar.
Bültenler ve WooCommerce için
Aynı fikir bülten eklentileri ve ödeme alanları için de çalışır: adres gönderilirken kontrolü çağırın ve sonucu kişiyle birlikte saklayın. Kontrolü eklemeden önce biriken büyük bir listeniz varsa, biriken kiri temizlemek için bir kez toplu doğrulamadan geçirin.
Yeni hesaplar, kod parçasını bir test sitesinde denemeye yetecek ücretsiz kontörle başlar. Canlıya geçerken kontör paketlerine bakın; kontörler 12 ay geçerlidir, bu yüzden bir paket düzenli bir hızla bir yıllık kayıtları karşılar.