folder Tahribat.com Forumları
linefolder Asp - Php - Cgi - Perl
linefolder Php Form Doğrulama (If Else Preg_Match) Sorunu



Php Form Doğrulama (If Else Preg_Match) Sorunu

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    turkz
    turkz's avatar
    Kayıt Tarihi: 13/Aralık/2009
    Erkek

    Php form doğrulatmak istiyorum ama hata veriyor veritabanına kaydetmiyor. Hata nerede bulamadım yardım.

    <?php
    function test_input($data)
    {
         $data = trim($data);
         $data = stripslashes($data);
         $data = htmlspecialchars($data);
         return $data;
    }
    // define variables and set to empty values
    $nameErr = $emailErr = "";
    $adsoyad = $email = $text = "";
    $tarih = date('Y-m-d');
    $ip = $_SERVER['REMOTE_ADDR'];
     
    if(isset($_POST['gonder']))
    {
       if (empty($_POST["adsoyad"]))
         {$nameErr = "Name is required";}
       else
         {
         $adsoyad = test_input($_POST["adsoyad"]);
         // check if name only contains letters and whitespace
         if (!preg_match("/^[a-zA-Z ]*$/",$adsoyad))
           {
           $nameErr = "Only letters and white space allowed";
           }
         }
      
       if (empty($_POST["email"]))
         {$emailErr = "Email is required";}
       else
         {
         $email = test_input($_POST["email"]);
         // check if e-mail address syntax is valid
         if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email))
           {
           $emailErr = "Invalid email format";
           }
         }
    
     if (empty($_POST["text"]))
        {$text = "";}
      else
        {$text = test_input($_POST["text"]);}
    
    	 
       if ($adsoyad != '' && $email!= '' && $text != '') {
    
    $kayit = mysql_query("insert into yorumlar(vID,adsoyad,email,text,tarih,ip) values('$id','$adsoyad','$email','$text','$tarih','$ip')"); 
    
    } else {
            echo '<p>You need to fill in all required fields!!</p>';
        }
    	
    }
    
    
    ?>

     

     


    Dünyayı iyiler kurtaracak.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Austen
    Austen's avatar
    Kayıt Tarihi: 13/Ağustos/2012
    Erkek

    Mysql'in rezerve ettiği özel kelimelerini alan adı olarak kullanırken özel bir escape işlemi uygulamak gerekir. Text bu kelimelerden birisidir. Tam listesine erişmek istersen;

    https://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

    Kullanırken `` (altgr + virgül tuşu ile yapıyorsun) arasına alırsan problemi giderirsin. Ama unutmamak adına kolon isimlendirmesi yaparken bunları kullanmamaya özen gösterirsen daha iyi olur.

    $kayit = mysql_query("insert into yorumlar(vID,adsoyad,email,`text`,tarih,ip) values('$id','$adsoyad','$email','$text','$tarih','$ip')");

    Austen tarafından 14/Nis/14 23:01 tarihinde düzenlenmiştir
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    turkz
    turkz's avatar
    Kayıt Tarihi: 13/Aralık/2009
    Erkek

    teşekkürler hocam text tablosunu yorum olarak değiştim ama hala sorun var kaydetmiyor. You need to fill in all required fields hatasını veriyor. http://www.dr0.net sorun burda

    turkz tarafından 25/Nis/14 22:04 tarihinde düzenlenmiştir

    Dünyayı iyiler kurtaracak.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Austen
    Austen's avatar
    Kayıt Tarihi: 13/Ağustos/2012
    Erkek

     $email!=

    Şuradaki ifadenin birleşik olmasından olabilir. Ayrıca önerim empty($email) şeklinde kontrol etmekten çok en üstte diğer değişkenlerin yanında bunu tanımlayıp eğer dolu geliyorsa o değişkene değer ata. Error_Reporting kapalıysa onu aktif edip hata kodlarını incele derim.

Toplam Hit: 744 Toplam Mesaj: 4