Php ile İletişim Formu

 bcakir
 27 Eylül 2011
 Php

Merhaba arkadaşlar kısa bir aradan sonra yeni bir uygulama yazısıyla tekrar karşınızdayım. Bu yazımda sitelerinize kolayca ekleyebileceğiniz bir iletişim formu betiği yapacağız. Bu iletişim formunun iki farklı bölümü var. Birinci bölüm kullanıcıdan bilgilerin alınması. İkinci bölüm ise bilgilerin kontrolü ve yazılan mesaj iletisinin gönderilmesi. Ayrıca, girilen bilgiler hatalı ise de,daha önce girilmiş bilgileri kaybetmeyip tekrar form alanlarında göstereceğiz. Hatalı formun gönderilebilmesi için ise hatalı girilmiş alanların düzeltilmesini isteyeceğiz. Bu yazımda bu işlemlerin nasıl yapıldığını anlatacağım. Uygulamamızın genel olarak nasıl olduğunu anlattm, şimdi uygulamamızı geliştirmeye başlayabiliriz.

<!– Php kodları buraya gelecek –>
<!DOCTYPE html>
<html>
<head>
<title>Php İletişim Formu</title>
</head>
<body>
<form id="form1" method="POST" action="index.php">
Ad-Soyad: <input type="text" name="ad_soyad" value="<?php echo $ad_soyad; ?>" /><br />
Gönderilecek e-mail: <input type="text" name="email" value="<?php echo $email; ?>" /><br />
Mesajınız: <textarea rows="5" name="mesaj" cols="25"><?php echo $mesaj; ?></textarea><br />
<input type="submit" name="gonder" value="Gönder" />
</form>
</body>
</html>

Html form elemanları ile iletişim formumuzu oluşturduk. Php kodlarımız sayfanın en üstüne konulacak. İletişim formu uygulamamızı bölmeyeceğiz, sadece bir sayfada geliştireceğiz. Siz isterseniz değiştirebilirsiniz. Uygulamamızın ilk kısmı yukarıdaki gibiydi, şimdi ise Php ile uygulamamızın ikinci bölümünü yapmaya başlayabiliriz.

<?php
//html dahil bütün kodları index.php olarak kaydedin
if(isset($_POST["gonder"])){
    //kutulara girillen değerlerin alınması
    $ad_soyad=$_POST["ad_soyad"];
    $email=$_POST["email"];
    $mesaj=$_POST["mesaj"];
    $ip=$_SERVER['REMOTE_ADDR'];
    $tarih=date('Y-m-d');
    //mesaj konusunu girin
    $konu="Mesaj Konusu";

    //emailin kurallara uygun olup olmadığı kontrolü
    $email_kontrol = filter_var($email, FILTER_VALIDATE_EMAIL);

    //form alanlarının boş olup olmadığı kontrolü
    if (empty($ad_soyad) || empty($email) || empty($mesaj)){
        echo "Form alanlarını boş bırakamazsınız.";
    //mail adresi kontrolü
    }elseif (!$email_kontrol){
        echo "Geçerli email adresi girin.";
    }else{
        //mesaj gönderme işlemi
        $msj.="Iletisim Mesaji\n\n";
        $msj.="Ad-Soyad:".$ad_soyad."\n";
        $msj.="Tarih:".$tarih."\n";
        $msj.="IP Adresi:".$ip."\n";
        $msj.="Mesajiniz:".$mesaj;
        $mesajgonder = mail($email, $konu, $msj);
        if($mesajgonder){
            echo "Mesajınız başarıyla gönderildi";
            //form alanlarını sıfırlama
            $ad_soyad="";
            $email="";
            $mesaj="";
        }else{
            echo "Mesajınız gonderilirken hata olustu.";
        }
    }
}else{
    //form gönderilmediği için değer yok
    $ad_soyad="";
    $email="";
    $mesaj="";
}
?>

Yukarıda Php ile form alanların kontrol edilmesi ve mesajın gönderilme işlemlerini yaptık. Eğer mesaj hatasız bir şekilde gönderilirse form alanları temizleniyor aksi takdirde ise girilmiş bilgiler alanlardan silinmiyor. Unutmadan şunu belirteyim; bu uygulama localhostda çalışmaz, sunucuda ise çalışır. Çünkü sunuculara mail server kuruludur. Sizin bilgisayarınızda da çalışması için ise bilgisayarınızın mail server olması gerekmektedir. Uygulamamızın çalışması için önemli detayları da yazarak yazımızın sonuna gelmiş olduk. Yararlı bir uygulama olduğunu düşünüyorum. Gelecek yazılarımda görüşmek dileğiyle.

Uygulamanın sadece 1 kişiye ya da kendinize mesaj gönderme versiyonunu buradan indirebilirsiniz.

 8.839 Okunma

Bu yazıya 41 yorum yapılmış.

  1. Merhaba

    Üstat Bu Gönderilen Maillerin Hangi Mail Adresime Gelecegini Nasıl Yapacagız

    • Gönderilecek e-mail bölümüyle hangi mail adresine göndereceğini söylüyorsun. Eğer sadece bana gelsin diyorsan, Html bölümünden o bölümü kaldır. Php kısmında ise $email=$_POST[“email”]; buraya kendi mail adresini gir.

  2. Peki Bir Şey Daha Soracagım Ben 3 Bölüm Die Kullandım Ama Bu Sefer 2 Olacak Bu Aynı Forma 3 Bölüm Olup Mailler Sadece Bana Gelmesini Nasıl Yaparım

    • Gönderilecek e-mail bölümünü gönderen mail adresine çevir. Form elemanının ismini (name=”gmail”) gmail yap. Bunu $gmail=$_POST[“gmail”]; şeklinde Php içerisinde al, değerlerin alınması bölümünde. IP Adresi: den sonra, Mesajiniz: dan önce yazacağım kodu ekle. $msj.=”Gönderici:”.$gmail.”\n”;

  3. Üstat Rica Etsem Kodu Paylaşırmısın Olmadı Bir Türlü

    • Aşağıdaki koları uygun yere ekle veya değiştir.
      Değiştir: name=”gmail” value=”< ?php echo $gmail; ?>” />
      Ekle: $gmail=$_POST[“gmail”];
      Değiştir: $email_kontrol = filter_var($gmail, FILTER_VALIDATE_EMAIL);
      Değiştir: if (empty($ad_soyad) || empty($gmail) || empty($mesaj)){
      Ekle: $msj.=”Gönderici:”.$gmail.”\n”;

  4. Üstat Kızacaksın Ama Tam Olarak Verirmisin Rica Etsem Çalışmadı Bir Türlü 🙂

    • Kodu buradan indirebilirsin. Rapor yazıyorum hızlıca yaptım bundan dolayı deneme şansım olmadı, sen denersin ve hata yoksa buraya yazarsın. Yazıya ekleyecem herkes faydalsın diye.

  5. Süper Oldu Teşekkür Ederim 🙂 Ellerine Saglık Yordum Lütfen Kusura Bakma

  6. Merhaba

    Üstat Senin Formu Takip Eder Oldum Bir Sorum Daha Olacak Mailler Spama Düşmüyor , Ama Aynı Anda 3,4 Kişiye Göndermek Mümkünmü Mailleri

    • aynı anda birden fazla kişiye göndermek mümkün ama çok fazla kişiye aynı anda atarsan (100 falan gibi) maillerin spama düşme ihtimali çok yüksek.

  7. Üstadım Peki PHP Ögrenmek İçin Nasıl Bir Yol İzlemem Gerekir

    • Gönderilecek email kısmında göndereceğin mailleri araya virgül koyarak formdan al. Yani kullanıcıya, birden fazla kişiye mail atmak için araya virgül koyarak mail adreslerini girin de. Sonra bu mailleri explode fonksiyonu ile virgülden bölerek ayrı ayrı maillere ayır. Sonrada for döngüsü ile teker teker mail attırma işlemini yap.

  8. Üstat Başka Bir Şey Sormuştum Ben PHP Ögrenmek İstiyorum Bir Kaynak Filan Varmı Acaba

    • Kusura bakma bunu yapmak için nasıl bir yok izlemem gerekli diye anladım ben. Benim yazdığım 20 makaleden oluşan başlangıç serisi var (sayfalardan en sonuncusuna gidersen bulabilirsin). Onun dışında internette Php eğitim videoları diye ararsan birçok bedava eğitim videosu veya kitap bulabilirsin.

  9. Merhaba

    Gene Ben 🙂 Üstat Seni Blogu Takip Ederek Ufak İşlerden Para Kazanmaya Çalışıyorum Şimdi Senin Formu Kullanırken Gene Takıldım 🙂

    Acaba Bu Foruma Resim Ekleme Bölümü Gelirmi ? Mailde Resimde Gelsin Die

    Şimdiden Teşekkür Ediyorum

    • Ekleyebilirsin, ister bir textbox daha koy resmin internet linkini girin de istersen de daha önce yazdığım resim yükleme ve boyutlandırma uygulamasından yararlanarak resim yükletme işlemi ekle.

  10. Şimdi Söyle Yapsam Olurmu

    Yorumda Verdigin Linkteki Kodu Mail Kodunun En Üstüne Ekleyi Şuda Mail Formuna Eklesem Aynı Mail İçinde Gidermi ?

  11. şimdi üstat ben biraz ugraştım biraz ilerledima ama tek bir yerde takıldım

    böyle yapınca upload edip mail gönderiyor ama resimin isimini göndermiyor

    ama böyle yapınca mail atıp resmin ismini gönderiyor

  12. böyle yapınca upload edip mail gönderiyor ama resimin isimini göndermiyor

    ama böyle yapınca mail atıp resmin ismini gönderiyor

    • Uğraş uğraş öyle kolay kolay program yazılmaz 😀 deneye deneye öğreneceksin sende kodlama yapmayı.

  13. Sana Yazdıgımdan Beri Yapıyorum Form Kodları Çakışıyor enctype=”multipart/form-data” Bu Kodu Koyunca Upload Ediyor İsmini Göstermiyor Koymayınca Upload Etmiyor Ama Resmin Adı Geliyor 🙂 Kafayı Yedirdi Bunda Yardım Et Bana Gerekirse Ücreti 5 Adet Resim Yükleyip Form İle Mail Gelmesi

    • $_FILES[‘datafile’][‘name’]; kodu resmin ismini alır. Maile ekleyeceksin bu kodu. Böylece ismi de sana gelecek.

  14. Son Soru 🙂 5 Resim Nasıl Upload Olacak Başka Sormuyacam Kendim Yapacam Söz

    • 5 tane form enctype=”multipart/form-data” koyman lazım.

  15. Hemen Deniyorum 🙂

    O Zaman Mailde 5 Tane İsim Gelmiyecek Gibime Geliyor Ama Deniyecem 🙂

    • Hepsinin ismini farklı koyacaksın form elemanlarının. Yoksa alamazsın içerisindeki bilgiyi. Ayrıca bunların isimlerini kullanarak içeriğindeki bilgileri al.
      enctype=”multipart/form-data”> type=”file” name=”datafile1″
      enctype=”multipart/form-data”> type=”file” name=”datafile2″
      $isim1=$_FILES[‘datafile1’][‘name’];
      $isim2=$_FILES[‘datafile2’][‘name’];
      Üstte yazdıklarımı dikkatlice yaparsan olur. Benim de yapmam gereken işler var, kodu tek tek okuyacak zamanım yok mâesef.

  16. Üstat Bunu Ücreti İle Bana Yaparmısın İllah Ettirdi Valla Anlamadım Ya :/

    • İstediğin özellikleri, yapabilirsen kaba taslak çizimi de ekleyerek bana iletişimi kullanarak mail at. Müsait olunca yapayım.

  17. Gönderdim Hocam Beklemedeyim

  18. Sadece mail kısmını alıp, kullandım. İşimi gördü bu uygulama, teşekkür ederim.

  19. hocam ben bu uygulamaya file field özelliği eklemek istiyorum ve checkbox ile select list özelliğini php de mail nasıl atabiliriz. yardımcı olabilir misiniz hocam ?.

  20. teşekkür ederiz işe yaradı

  21. Aşağıda vermiş olduğum linkte türkçe karakter sorunu olmayan ve sorunsuz çalışan bir mail uygulaması var. Bu mail uygulamasına bakmanızda yarar var diyorum.

  22. Hocam böyle bi hata çıkıyor.

    Warning: mail() [function.mail]: SMTP server response: 550 5.7.1 … we do not relay in C:\siteler\netotolastik.com\httpdocs\iletisim.php on line 29
    Mesajınız gonderilirken hata olustu.

    • Localhost’da deniyorsunuz galiba, smtp mail server kurmadan mail gönderemezsiniz localde. Bir firmadan satın alınan server hizmetine zaten hosting firması mail server kurmuştur.

  23. Hocam Merhabalar,
    “Yukarıda, Php ile form alanların kontrol edilmesi ve mesajın gönderilme işlemlerini yaptık. Eğer mesaj hatasız bir şekilde gönderilirse form alanları temizleniyor aksi takdirde ise girilmiş bilgiler alanlardan silinmiyor.”
    Form alanlarından yazı siliniyor fakat mail adresime düşmüyor. Herhangi bir hatada vermiyor. Sorun ne olabilir acaba çıkamadım içinden?

  24. Bana mail geliyor fakat içerik gelmiyor, bunun sorunu nedir? teşekkürler

Yazı hakkında görüşlerinizi belirtmek istermisiniz?

Daha fazla Php
Kapat