Aziz Ozbek
WordPress Expert from Zürich
php ajax contact form

Php Ajax iletişim Formu (Sayfa yenilemeden gönderme)


İlk olarak Php dosyalarını indirin

Bu konumuzda beraber, Jquery(Ajax) ve Phpmailer Sınıfı ile sayfa yenilenmeden gönderilen ve 100% çalisan php ajax iletişim formu oluşturmayi göreceğiz.

İletişim Formu artık web sitelerin olmazsa olmazı. Fakat kullanıcılar kullandıkları İletişim Forumlarında kolaylık isterler, mesela;

sadece hata uyarılarını göstermek için sayfa yenilenirse, interneti yavaş olan bir kullanıcı sayfayı terkeder yada beklemek zorunda kalır. Bu yüzden iletişim formlarımız her zaman kullanışlı ve mobil uyumlu olmalıdır.

Çoğu zaman ile İletişim Formu kodluyoruz fakat ya çalışmıyo yada spam kutusuna düşüyo. Bu yüzden yıllardır kullandığım 100% çalışma garantisi verdiğim iletişim formunu sizlerle paylaşıyorum 🙂

Bu iletişim formunu kullanmak için özel bir şey bilmenize gerek yok, sadece talimatları okuyup uygulayın. Yıllar yıllar önce bi video çekmiştim 🙂 onu da aşağıda sizlerle paylaşıyorum, ama en basit hali ile kullanmak için aşağıdaki kullanım kılavuzunu gene de bi okuyun.

Yedek Video Linki: https://vimeo.com/157353491

phpmailer

PHPmailer nedir?

Bir email adresine mail yollamak için sizin belirlediğiniz bağlantı bilgileriyle mail sunucusu ile haberleşerek uygun ortamı hazırlayan bir PHP sınıfıdır.
PHP’de standart mail gönderme fonksiyonu olan mail() fonksiyonu günümüzde tüm hosting servislerinde Spam-Mail gönderimini engellemek amacıyla engelli durumdadır. Fakat, bu kendi sunucunuz üzerinden mail gönderemeyeceginiz anlamına gelmemektedir. Konumuzda da kullandigimiz gibi, sunucu ile (SMTP(Simple Mail Transfer Protocol) Protokolü aracılığıyla) haberleşen ve sunucu üzerinde kimlik doğrulama yapan bir Mailer-Scripti kullanılabilirsiniz. PHPMailer, bunun en iyi tercihlerden biri ve tamamen ücretsiz. (Open-Source-Github PHPmailer)

Php Ajax İletişim Formunu kurma ve editleme

  1. İlk olarak mail.zip dosyasini indirin ve Local Hostunuza yada FTP Hostunuza yükleyin.
  2. Eger kendinize özgün bir Iletisim Formunuz varsa, id="contactForm" ve action="send.php" degistirin.(tabi ki input id ler ve name ler 🙂
  3. Sonra <form> un altina <script> kodlarini yapistirin.
  4. Sonra form icindeki, input id‘ler ve name ler <script>  icindekiler ile ayni mi degil mi diye kontrol edin.

Kodların anlamları

  1. İlk olarak Hata mesajlarini display:none kodu ile görünmez yapiyoruz.
  1. Form.php icinde degistirmeniz gerekenler:
    1. action eger send.php‘iyi degistirmek istiyosaniz, bu parametreyi kendi dosyaniza yönlendirin.
    2. Eger kendinize özgü form-id‘niz varsa, bu parametreyi degistirin ve script icinde degistirmeyi unutmayin.
    3. input id ler name parametlerini kendinize göre ayarlayin yada oldugu gibi birakin. Bu parametleri degistirirseniz, send.php ve script a
  1. <script>içinde degistirmeniz gerekenler:
    1. data: Eger form-id yi degistirdiyseniz.
    2. url: Eger send.php dosyasinin adini degistirdiyseniz yada baska bir dosyaya yönlendiriyorsaniz.
    3. En önemli hatalardan biri olan Jquery çakismasi . Eger sitenizde zaten bir Jquery Versionu kullaniliyosa, Jquery versionlarini kontrol edin. Hangi versiyon ile hem sizin Jquery Kodlariniz hem iletisim Formu hatasiz calisiyo diye test edin.
  1. Burda PHP ile tekrar bos inputlari kontrol ediyoruz, eger kullanicinin Javascript baglantisi yoksa, tabiki Jquery ile input lari kontrol edemeyiz. Yada kötü kullanicilar Jquery Kütüphanesi kodlarini silebilir.
  2. addslashes ve strip_tags kodlari ile kendimizi Xss attacklarindan koruyoruz.
  1. $mail->Host SMTP Hostunuz. Cogunlukla webmail.sitename.com yada mail.sitename.com
  2. $mail->Port Host saglayicinizin websitesinde güvenli Mail Port’unuzu buraya yazin (Cogunlukla: 465). (Port 25 güvenli Port olmadigindan önerilmez).
  3. Diger kodlarin aciklamasini ingilizce olarak, kodlarin yanina yazdim. Basit ingilizce oldugu icin anlacaginizdan eminim, olmazsa kücük bi google translate iyi olur 🙂

PHPmailer’de en önemli satirlar:

Yukardakileri hallettikten sonra 49. Satirdaki public $From kendi mailiniz ile degistirmeyi unutmayin.

public $FromName ise Gelen Kutunuzda görünecek basliktir.

Phpmailer + Ajax Iletisim Formu

ajax-contact-form

ajax-contact-form

Rating: 5.0/5. From 7 votes.
Please wait...

19 comments

  1. hocam emeğinize sağlık. çok güzel ve kaliteli açıklamalar olmuş. Ancak sizden bir yardım istiycem. Kodları açıklamalarınızdaki gibi uyguladığım zaman site üzerinden mail alışverişinde herhangi bir sıkıntı yaşamazken, mobil uygulamaya çevirdiğim zaman There is an Error hatası alıyorum ve bir türlü hatayı bulamadım. Sizce neden kaynaklı olabilir bu? Sadece sizin kodlarınızdan, yani iletişim formundan oluşun bir site için söylüyorum bunları?. Yardımcı olursanız çok sevinirim.

  2. Hocam öncelikle emeğinize sağlık. Sizin gibi insanlara ihtiyaç çok. Bir konuda yardımınızı rica ediyorum. Hazırlamış olduğunuz makaleyi aynen tatbik ettim. sunucu üzerinde sorunsuz çalışıyor. Ancak mobil uygulamada phonegap ile derlediğim zaman iletişim formu çalışmıyor. Bunun nedenleri neler olabilir? Yardımcı olabilir misiniz?

    1. EyvAllah Çağlar, mobil uygulamaya çevirme konusuna sahsen hic girmedim, responsive siteler tercihimdir. Mobil uygulamaya cevirdiginde, karsina cikacak en büyük problem, JavaScript kütüphanesinin siralamasi ve versiyonlaridir.

  3. çıktı resimleri arasına mobil de de çalışan haliyle de bir resim koyarsak harika olacak.

  4. Merhaba, ben bu yaptığınızı websiteme nasıl bağlayacağım yardımcı olurmusunuz ?

  5. Aziz bey formu çok iyi örneklendirmişsiniz. Tebrik ederim.
    http:// OLAN SİTELERDE ÇOK İYİ ÇALIŞIYOR.
    Fakat:
    https:// Olan sitelerde çalışmıyor.

    Nedeni konusunda fikrinizi almak isterim…

    Emekleriniz için özellikle teşekkür ederim.

    Bilgi paylaştıkça güzeldir. SAYGILARIMLA.

    1. Http ile Https web Portlari oldugu icin bu konuda bi etkisi olacagini sanmiyorum
      Https ile kullanirken, aldiginiz hatayi yazarsaniz belki yardimci olabilirim.
      Browser üzerinde bir hata görmüyorsaniz, ctrl+shift+c ile konsolda bisi olup olmadigina bakin. Yoksa hata bilgisi (log) icin server sahibi ile görüsün

  6. CONSOLE’ DA GÖRÜNEN HATA:

    Mixed Content: The page at ‘https://www.dunyaemlakbursa.com/das/index.html’ was loaded over HTTPS, but requested an insecure script ‘http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js’. This request has been blocked; the content must be served over HTTPS.

    Failed to load resource: the server responded with a status of 404 ()

    [ Karışık İçerik: ‘https://www.dunyaemlakbursa.com/das/index.html’ adresindeki sayfa HTTPS üzerinden yüklendi, ancak güvenli olmayan bir komut dosyası ‘http://ajax.googleapis.com/ajax/libs/jquery/ 1.8.3 / jquery.min.js ‘. Bu istek engellendi; içerik HTTPS üzerinden sunulmalıdır.

    Kaynak yüklenemedi: sunucu 404 () durumuyla yanıt verdi” ]

    https:// de problem olması sanırım ”jquery.min.js” Problemi.

    Ben de sorunun cevabını arıyorum… SAYGILARIMLA.

  7. Aziz bey sorunu buldum !

    Chrome, https ve http’nin karıştırılmasına izin vermiyor..
    Oysa linkle alınan [jquery.min.js] adresi (http) ile alınmaya çalışılıyor. jquery.min.js ‘i indirerek site içinde kullanmak çözüm oluyor.

    SAYGILARIMLA.

    Vaktinizi çaldım. Süpersiniz.

    TEŞEKKÜRLER.

    1. Evet, https ile korunan bir sitenin icinde http ile baslayan bir link kullanilirsa, yeni browserlar Mixed Content hatasi veriyo. çözüm bulduguna sevindim, yorumu görmemistim. kolay gelsin.

      1. ustadım kolay gelsin birşey soracağım bu mesaj gönderildi yazısını büyütebiliyormuyuz birde gönder butonunun rengini nasıl değiştirebiliyoruz şimdiden çok sağolasınız

    2. Günay abi merhaba abi dediğin dosyayı nasıl indirip web sitede kullanacağız anlatabilirmisin yapamadım ben https kullanıyorum yardımcı olurmusun.

  8. Aziz Hoçam merhaba nasılsınız hocam mail işlemi http de gönderiliyordu lakin https de gönderilmiyor yukarıda arkadaş anlatmış lakin çözemedim yardımcı olursanız cok sevinirim şimdiden çok teşekkürler kolay gelsin.

  9. Günay abi merhaba abi dediğin dosyayı nasıl indirip web sitede kullanacağız anlatabilirmisin yapamadım ben https kullanıyorum yardımcı olurmusun.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir