Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Birleşik mail formu

Konu, 'PHP' kısmında Sahin tarafından paylaşıldı.

  1. Sahin

    Sahin Daimi Üye

    Kayıt:
    28 Mayıs 2002
    Mesajlar:
    8,943
    Beğenilen Mesajlar:
    0
    Aşağıdaki form ile;

    **********************************************
    <form action="mailpost.php" method="POST" >
    <table width="380" border="0" bordercolor="#333333" cellspacing="10">
    <tr>
    <td><span class="icindekiler"><b> <font color="#000000">İsim&nbsp;&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp; :</font><font color="#FFFFFF"> </font></b></span></td>
    <td><span class="icindekiler"><b>
    <input class="boxes" type="text" name="isim">
    </b></span></td>
    </tr>
    <tr>
    <td><span class="icindekiler"><b><font color="#000000">E-mail
    &nbsp;&nbsp;&nbsp;:</font><font color="#FFFFFF"> </font></b></span></td>
    <td><span class="icindekiler"><b>
    <input class="boxes" type="text" name="email">
    </b></span></td>
    </tr>
    <tr>
    <td><span class="icindekiler"><b> <font color="#000000">Konu&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">&nbsp;&nbsp;:</font><font color="#FFFFFF">
    </font></b></span></td>
    <td><span class="icindekiler"><b>
    <input class="boxes" type="text" name="konu">
    </b></span></td>
    </tr>
    <tr>
    <td valign="top"><span class="icindekiler"><b> <font color="#000000">Mesajı</font><font color="#000000">nız:</font><font color="#FFFFFF">
    </font></b></span></td>
    <td><span class="icindekiler"><b>
    <textarea class="boxes2" name="message" rows=8 cols=30>Mesajınızı giriniz.</textarea>
    </b></span></td>
    </tr>
    </table>
    <div align="center">
    <pre><input class="submitter" type="submit" value="Gönder" name="submit3">&nbsp;&nbsp;<input class="submitter" type="reset" value="Temizle" name="reset"></pre>
    </div>
    </form>
    **************************************************

    aşağıdaki gönder sayfasının aynı sayfa içinde olmasını istiyorum. Çünki bir önceki soruda sorduğum yöntemle include ettiğimde form sayfasını include edebiliyorum ama gönder sayfası olmuyor sanırım ikisi aynı sayfa içinde olursa sorun hallolur. Hallolur değil mi?

    **************************************************

    PHP:
    <?
     
    //post gelmişmi kontrol et
     
    if (getenv("content_length")==0){
                
    header("Location:index.php");die("");
     }


     
    $isim = @$HTTP_POST_VARS["isim"];
     
    $email= @$HTTP_POST_VARS["email"];
     
    $konu = @$HTTP_POST_VARS["konu"];
     
    $message=@$HTTP_POST_VARS["message"];

     
    //kontroller
     
    if ($isim=="")
              
    $hata[] = "İsim boş bırakılmış";

     if (!
    eregi("[a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]+\.[a-zA-Z0-9_.-]+",$email))
              
    $hata[] = "E-mail geçerli bir mail adresi değil";

     if (
    $konu=="")
              
    $hata[] ="Konu boş bırakılmış";

     if (
    $message=="")
              
    $hata[] ="Mesaj boş bırakılmış";


     if (
    is_array($hata)){
             
    //hata var göster
             
    echo "<h2>Hata</h2>";
             foreach (
    $hata as $er){
                        echo 
    "<li>$er";
             }
             echo 
    "<br><br><br><a href=\"Javascript:history.back()\">Geri Dön</a>";

     } else {
            
    //maili gönder
            
    $recipient "sahin@ceviz.net";
            
    $sender    =$email;
            
    $subject   =$konu;
            
            
    mail($recipient,$subject,$message,"From: $sender\nReply-to: $sender");

            
    //teşekkür mesajları
            
    echo "<br><br><br><Center><b>Email için teşekkürler. <br></b>
        </Center><br><br><br><br>"
    ;

     }

    ?>
     
  2. mkarabulut

    mkarabulut Misafir

    Ufak bi kontrolle yapabilirsin

    PHP:
    <?
    ob_start();
    if (
    getenv("content_length")==0){
         
    //formu göster
     
    } else {
         
    //formu işle
     
    }
    ob_end_flush();
    ?>

     
  3. Sahin

    Sahin Daimi Üye

    Kayıt:
    28 Mayıs 2002
    Mesajlar:
    8,943
    Beğenilen Mesajlar:
    0
    Kontrolu form sayfasınamı form işle sayfasınamı koyacam ya da iki sayfayı birleştirip arayamı?
     
  4. mkarabulut

    mkarabulut Misafir

    Hayır öyle değil.

    Atıyorum mail sayfan mail.php olsun
    PHP:
    <html>
    <body>
    <!-- Diğer HTML olayların-->
    <?
    ob_start
    ();
    if (
    getenv("content_length")==0){
            echo 
    "<form action=mail.php method=POST>" ;
            
    //Formun greiye kalanı...
            
    echo "</form>"
     
    } else {
         
    //formu işle
         //ikinci yazdıkların yani formu işleyen komutlar 
     
    }
    ob_end_flush();
    ?>
    <!-- HTML devam -->
    Açık oldu mu ? Yani sadece mail.php diye bi sayfan olacak o kadar ...

    And because of my boss :(
     
  5. Sahin

    Sahin Daimi Üye

    Kayıt:
    28 Mayıs 2002
    Mesajlar:
    8,943
    Beğenilen Mesajlar:
    0
    Ok kardeş sanırım halleder bu olayı hemen deneyeyim. ;)
     
  6. Sahin

    Sahin Daimi Üye

    Kayıt:
    28 Mayıs 2002
    Mesajlar:
    8,943
    Beğenilen Mesajlar:
    0
    Of yaa o kadar çok html tagı var ki içinde normal olarak parse error veriyor :) Sana bir mail yazayım en iyisi :D
     
  7. HunTER

    HunTER ...

    Kayıt:
    15 Ağustos 2002
    Mesajlar:
    8,684
    Beğenilen Mesajlar:
    0
    Meslek:
    Web Programlama
    Şehir:
    İstanbul
    Mevzuyu tam anlayamadım ama ben genelde su sekılde yapıyorum..

    Dıyelımkı maıl formunda kıme baslık ve ıcerık adlı uc alan ve bır submıt butonu var

    Kod:
    <?
    
     if ($gonder)
       {
       mail($kime,$baslik,$icerik);
       echo "Mesaj başarıyla iletilmiştir"; 
       }
      else
       {
    
    ?>
    
    <form method="post" action="mail.php">
      Kime  : <input type="text" name="kime"><br>
      Baslık: <input type="text" name="baslık"><br>
      İçerik: <textarea name="icerik"></textarea><br><br>
      <input type="submit" value="Gönder" name="gonder">
    </form>
    
    <?
      }
    ?>
    
    Bu durumda mail.php scriptını yukardakı gıbı yapılandırabılırız..

    Scrıptın en basındakı if($gonder) ıfadesı form alanı ıcındekı submıt butonunu referans alıyor (yanı "Gönder"'i).. Scrıpt ılkez calıstırıldıgında ortalıkta gonder adlı bır degısken olamıycagı ıcın if($gonder) ıfadesının ıkıncı kısmı yanı else ıcındekı form goruntulenıyor..

    Formun goruntulenmesı ardından form alanları doldurulup "Gönder" e tıklanırsa formun actıonunda belırtıldıgı gıbı form ıcındekı degıskenler (gonder de dahıl olmak uzere) post metoduyla yıne aynı scrıpte yanı mail.php ye gonderılıyor.. Bu durumda artık $gonder degıskenın bır degerı ("Gonder") oluyor ve scrıpt buna gore if bologunu calıstırarak mail() fonsıyonunu ısletıyor.. Ardından "Mail başarıyla iletilmiştir" mesajını goruntuleyerek ısını tamamlıyor..

    Ihtıyac halınde bu scrıpte kontrollerde eklemek mumkun.. Ve bu ıkı sekılde yapılabılır.. Ilk yontem html ıcınde java kullanmak.. Bu yontem bos yere phpyı kastırıp sunucu zorlamadıgı ıcın tercıh edılebılır.. Yada ıkıncı olarak php ıcınde bılınen kontroller kullanılarak yapılabılır.. Her ıkısınınede ornek vermek gerekırse..

    Kod:
    <?
     if ($gonder)
       {
       @mail($kime,$baslik,$icerik);
       echo "Mesaj başarıyla iletilmiştir";
       }
      else
       {
    
    ?>
    <html>
    <head>
    <script>
    function kontrol()
      {
      txterror='';
      if (mail.baslik.value=='') 
    	{ txterror=txterror+' - Başlık alanı doldurulmamış\n' }
      if (mail.icerik.value=='') 
    	{ txterror=txterror+' - İçerik alanı doldurulmamış\n' }
      if (mail.kime.value=='')   
    	{ txterror=txterror+' - Kime  alanı doldurulmamış\n' }
      else  {
            p=mail.kime.value.indexOf('@');
            if (p<1 || p==(mail.kime.value.length-1)) 
    	{ txterror=txterror+' - E-mail adresi doğru değil.\n' }
            }
    
      if (txterror) alert('Aşağıdaki hataları lütfen düzeltin:\n\n'+txterror);
      return (txterror == '');
      }
    </script>
    </head>
    
    <body>
    
    <form method="post" action="mail.php" name="mail">
      Kime  : <input type="text" name="kime"><br>
      Baslık: <input type="text" name="baslik"><br>
      İçerik: <textarea name="icerik"></textarea><br><br>
      <input type="submit" value="Gönder" name="gonder"
      onClick="Javascript:return kontrol();">
    </form>
    
    </body>
    </html>
    <?
      }
    ?>
    
    Scripti java kontrolune

    Kod:
    <?
     if ($gonder)
       {
       $txterror = "";
    
       if ($baslik == "") 
    	{ $txterror = "- Başlık alanı doldurulmamış<br>"; }
       if ($icerik == "") 
    	{ $txterror = "- içerik alanı doldurulmamış<br>"; }
       if ($kime == "")   
    	{ $txterror = "- Kime alanı doldurulmamış<br>"; }
       else {
            if (!eregi("^.+@.+\\..+$", $kime)) 
    	{ $txterror = "- E-mail adresi doğru değil<br>"; }
            }
    
       if ($txterror == "")
            {
            @mail($kime,$baslik,$icerik);
            echo "Mesaj başarıyla iletilmiştir";
            }
       else
            {
            echo "Aşağıdaki hataları lütfen düzeltin:<br><br>".$txterror;
            }
       }
      else
       {
    
    ?>
    
    <form method="post" action="mail.php" name="mail">
      Kime  : <input type="text" name="kime"><br>
      Baslık: <input type="text" name="baslik"><br>
      İçerik: <textarea name="icerik"></textarea><br><br>
      <input type="submit" value="Gönder" name="gonder">
    </form>
    
    <?
      }
    ?>
    
    Scripti ıse PHP kontrolune ornek gosterılebılır.. Herneyse sanırım bu sekılde ozetlıyebılırım..
     
    Son düzenleme yönetici tarafından yapıldı: 25 Eylül 2002
  8. Sahin

    Sahin Daimi Üye

    Kayıt:
    28 Mayıs 2002
    Mesajlar:
    8,943
    Beğenilen Mesajlar:
    0
    Teşekkürler Hunter sorunu çözmüştüm ama yinede saol. Ama şimdi bir sorun daha var. İlk gönderdiğim mail işleyen fonksiyonla bu siteden kendime deneme maili gönderdiğimde mesela ceviz@ceviz.net adresinden yazıyorum maili mail bana ceviz@ceviz.net.taskin.com adresinden geliyor. Bu taskin.com u nasil kaldiririm?
     
  9. mkarabulut

    mkarabulut Misafir

    ceviz@ceviz.net diye bi kullanıcı yok demekki serverda ? Var mı ?

    Neyse ben yok farzederek bi şeyler yazmak istiyorum. Normalde mailin header kısmına varolan bir kullanıcı @ server ismi yazılmazsa, onu isim olarak algılar ve sonuna server ın ismini otomatik ekler.

    Yani atıyorum
    From : php
    yazsaydın, o giderken php.taskin.com diye gidecekti. En doğru ve güzel syntax ise
    From : Mustafa Karabulut <mkarabulut@ceviz.net>
    veya
    From : mkarabulut@ceviz.net

    Kolay gelsin
     
  10. Sahin

    Sahin Daimi Üye

    Kayıt:
    28 Mayıs 2002
    Mesajlar:
    8,943
    Beğenilen Mesajlar:
    0
    Kodda from kısmı yazılı Mustafa, sen yazdın unuttunmu :D

    Sanırım MTA da sorun servere bildireyim ayarlasınlar :p