PHP 8.x Uyumlu, Smtp ve ReCaptcha Özellikli Ücretsiz İletişim Formu

PHP 8.x Uyumlu, Smtp ve ReCaptcha Özellikli Ücretsiz İletişim Formu

Bundan seneler önce bu bağlantıda yine ücretsiz ve harika bir iletişim formu scripti paylaşmıştım sizlerle. Gerçekten harika bir script idi ve basitçe style dosyası üstünden özelleştirilebiliyordu. Ayrıca ücretsiz olması, smtp ve Google ReCaptcha desteği sunması, onu rakipsiz yapıyordu.. Bende bahsettiğim o scripti, tam 8 sene lordiz.com iletişimi için kullandım, ta ki bugüne dek. Peki ne değişti de başka bir scripte geçiş yaptım?

Tabi ki, emektar iletişim scriptimiz güncel sunucularda sorunlar çıkarmaya başladı!

Buna ilk olarak 5-6 ay  önce sunucumda kullanılan php sürümünü güncel sürüme yükseltince denk gelmiştim. Php sürümünü güncelleyince, iletişim formu mesaj gönderemiyor, bir sürü hata kodu gösteriyordu. Geçtiğimiz günlerde tekrar bu sorun ile karşılaşınca, anladım ki artık bu script ile yolları ayırmamız gerekiyor.. (Phpmailer sürümünü yükseltmek sorunumu çözebilirdi fakat bu seçeneği ücretsiz başka script bulamama ihtimalime saklamıştım. Neyse ki uğraşmama gerek kalmadı.)

Çok fazla değil, 20 -30 dakika araştırma yaptıktan sonra, yine GitHub‘da harika ve öncekine çok benzeyen bir script buldum. Bu scriptin eskisinden farkları ise şöyle; Php son sürümlerini destekliyor, görünmez ReCatpcha kullanabiliyorsunuz, mesaj gönderimi için ajax kullanıyor ve form kutucuklarında bir hata yapılırsa uyarı mesajları gösterebiliyor.

Scriptin geliştiricisi Fransız bir yazılımcı olan Gauthier Witkowski.

Scripti ücretsiz olarak paylaştığı GitHub sayfası şurası;

https://github.com/raspgot/Contact-Form-PHP

Kurulumu, kullanımı çok basit.

Hem Gmail, hem Yandex smtp desteği var.

Güncel sürümü paylaştığım github sayfasındaki yeşil renkli Code butonu altından, Download Zip bağlantısına tıklayarak indiriyor, içerisindeki 4 dosya, 1 klasörü iletişim formunun çalışacağı konuma gönderiyorsunuz.

Diyelim dosyaları alan adınızın ana dizinine gönderdiniz, artık adres.com/index.html altında iletişim formunuzu görmeye başlıyorsunuz. (Tabi alt klasörleri de kullanabilirsiniz.)

Scriptin düzgün çalışması için birkaç değişiklik yapmamız gerekiyor! 

Öncelikle sunucunuzda extension=curl veya allow_url_fopen özelliklerinin aktif olması gerekiyor. Genelde açık olur ama eğer bir sorun yaşarsanız host sağlayıcınıza açık olup olmadıklarını sorabilir veya kendiniz host panelinizden kontrol edebilirsiniz.

Sunucu kaynaklı bir engel yoksa..

AjaxForm.js: Notepad++ ile açıyor, 10. satırdaki;

const reCAPTCHA_site_key = 'GOOGLE_PUBLIC_KEY';

alanına, Google ReCaptcha admin konsolundan alacağımız ReCaptcha v3 public site anahtarını giriyoruz.

AjaxForm.php: Notepad++ ile açıyor, 18, 27, 28, 29, 30, 33, 34, 36, 37, 38, 39, 40, 45, 46, 48, 88, 102 ve 104. satırlarda değişiklikler yapıyoruz.

27, 28, 29. satırlar smtp kurulumuna dair. Buralara stmp servisimizin bilgilerini gireceğiz.

30. satır Google ReCaptcha gizli anahtarını gireceğimiz alan.

Sonraki satırlar (33, 34, 36, 37, 38, 39, 40, 45, 46, 48, 88, 102 ve 104) ise scripti Türkçeleştirme ile alakalı..

İndex.html: İletişim formunun vitrinini düzenleyeceğimiz dosya! Notepad++ ile açarak anladığımız yerleri Türkçeleştireceğiz.

İstersek head etiketi içine <link rel=”stylesheet” href=”style.css”> komutu ekleyerek ana dizine yükleyeceğimiz bir style dosyası yaratabiliriz. (Style dosyasına ve index.html dosyasına birkaç komut girerek ana görünümü çok daha iyi hale getirebilirsiniz.)

<div class=”panel-body”> sonrasına img kodları ekleyerek iletişim formuna logo yerleştirebiliriz.

</form> etiketi sonrasına formda görünmesini istediğimiz notları ekleyebiliriz. (Bize şuradan ulaşabilirsiniz. Telefonumuz, adresimiz şu vs. vs.)

Ve önemli kısım!

İndex.html 56. satırda yer alan GOOGLE_PUBLIC_KEY metninin yerine, az önce Google’dan aldığımız ReCaptcha public anahtarı giriyoruz. (Evet, bu anahtarı 2 ayrı yere giriyor, gizli anahtarı ise 1 yere giriyoruz.)

İşte bu kadar!

Eğer smtp ayarlarında hata yapmadıysanız, artık formdan yazılan mesajların size ulaşıyor olması gerekiyor.

Peki mesajlar hangi adresimize gelecek?

Tabi ki, AjaxForm.php dosyasında 28. satıra gireceğiniz smtp mail adresine.

Ayrıca iletişim formundan mesaj yazanlarda Email satırına girdikleri mail adresine bize gönderdikleri mesajın bir kopyasını alacaklar.

Diyelim ki 28. satıra gireceğiniz smtp adresini pek kontrol etmiyorsunuz, o zaman o adreste oturum açıp, tüm gelen mesajları devamlı kullandığınız bir mail adresine yönlendirmesini söyleyeceksiniz. (Bunun için Gmail ve Yandex’te yönlendirme koşulları bölümü bulunuyor.)

Ben iletişim formumda Yandex hizmeti kullanıyor, Yandex smtp server adresi olarak smtp.yandex.com.tr, port için 587 rakamını giriyorum ve form sorunsuz çalışıyor.

Demo için bu bağlantıya veya sitemde üst menüde yer alan iletişim bağlantısına bakabilirsiniz.

Konuyla alakalı sorularınız olursa yazı sonundaki yorum formundan yazabilirsiniz.