Form doğrulama

4 Cevap php

Ben bir veritabanına eklenecek zorunda aynı alanlara, çok olan bir form oluşturmak gerekiyor, ama ben sorunun bir kullanıcı sadece bir ya da iki satır doldurur ise, form hala boş teslim edecektir Kullanıcı doldurulmuş olan bir ya da iki alanları ile birlikte boş alanların veri

How can I check for the rows that have not been filled in and leave them out of the query? or check for those that have been filled in and add them to the query. . .

Thank_you.php dosyası $ _POST değişkenleri yakalamak ve veritabanına ekleyebilirsiniz.

<form method="post" action="thank_you.php">
         Name: <input type="text" size="28" name="name1" />
            E-mail: <input type="text" size="28" name="email1" />
            <br />
         Name: <input type="text" size="28" name="name2" />
            E-mail: <input type="text" size="28" name="email2" />
            <br />
         Name: <input type="text" size="28" name="name3" />
            E-mail: <input type="text" size="28" name="email3" />
            <br />
         Name: <input type="text" size="28" name="name4" />
            E-mail: <input type="text" size="28" name="email4" />

            <input type="image" src="images/btn_s.jpg" />
</form>

Ben bunu nasıl yapıyor hakkında gitmek istiyorum, bunu gerçekleştirmek için javascript veya jQuery kullanabilirsiniz varsayarak yaşıyorum?

Yardımlarınız için şimdiden Thanx.

4 Cevap

Diğerleri söylediler, bu doğrulama tek biçimi olarak javascript güvenmek kötü bir uygulamadır. Kullanıcıların geçerli veri göndermek için bir yol olarak javascript bak - ama always sunucu tarafında doğrulamak gerekir. Bunu göz önüne aldığımızda, burada benim önerim var:

<form method="post" action="thank_you.php">
         Name: <input type="text" size="28" name="name1" />
            E-mail: <input type="text" size="28" name="email1" />
            <br />
         Name: <input type="text" size="28" name="name2" />
            E-mail: <input type="text" size="28" name="email2" />
            <br />
         Name: <input type="text" size="28" name="name3" />
            E-mail: <input type="text" size="28" name="email3" />
            <br />
         Name: <input type="text" size="28" name="name4" />
            E-mail: <input type="text" size="28" name="email4" />

            <input type="image" src="images/btn_s.jpg" />
</form>

<?php

$num = 4; //Number of times the field is repeated

for($i = 1; $i <= $num; $i++){
   if($_POST['name'.$i] != '' && $_POST['email'.$i] !=''){ //Only process if name and email are not blank
      $thisname = $_POST['name'.$i];
      $thisemail = $_POST['email'.$i];
      //Your code here
   }
}

?>

Bu form doğrulama için javascript kullanmak için iyi, ama bunu güvenmemelisiniz. Yapılacak ilk şey, PHP $ _POST değerleri kontrol ve aradıkları şey geçerli emin olun (ya da en azından, onlar "" olmadıklarını kontrol) etmektir.

Javascript ile kontrol etmek için, bir onSubmit vereceğini = "..." form verileri ("formu göndermek yok" anlamına gelir) geçersiz ise false döndürür form etiketi içinde. Ve siz de muhtemelen bir uyarı istersin, yoksa sorunu göstermek için nedense sayfayı değiştirmek olabilir. Ben de senin için bir form doğrulama komut dosyası yazmak için gitmiyorum.

Sen bir JavaScript işlevini çağırmak için Gönder düğmesini kullanarak yerine formu göndererek JavaScript doğrulama yapabilirsiniz. Veri doğrulama kriterleri geçerse, JavaScript işlevi daha sonra veri gönderebilirsiniz. Ancak, JavaScript doğrulama tamamen güvenmemelisiniz. Kullanıcı JavaScript devre dışı varsa, kendi veri geçerliliği olmayacak, böylece PHP uygulama boş verileri işlemek için yeterince sağlam olmalıdır. Bu olsa, ile ilgili olması gereken sadece boş veri değildir. Sen çöp için kullanıcı girişi doğrulamak ve veritabanı kullanmadan önce veri sterilize gerekir.

Ben tam PHP sözdizimi bilmiyorum, ama ben hile yapmak gerektiğini, bazı sözde kod yazacağım. Temel fikir $ _POST değerleri almak zaman, kabul edilebilir değerlere sahip yeni bir karma oluşturmak ve sonra sorguları veya ne olursa olsun dışarı oluşturmak gerekiyor ne olursa olsun yöntemleri bu hash iletebilirsiniz isteyeceksiniz olduğunu. Ben yapacağım yolu tamamen karma geçersiz değerlerini kaldırmak için, bu yüzden onlar orada asla görünür. Açıkçası, (geçersiz olarak, vb onları işaretlemek) farklı yapabilirsiniz.

$cleaned_args = array();

foreach ($_POST as $key => $value) {
    if ($_POST[$key] != "" && is_valid_email($_POST[$key])) {
        $cleaned_args[$key] = $_POST[$key];
    }

make_db_call_or_whatever($cleaned_args);

burada is_valid_email belki PHP olan bir yöntemdir veya yazmak zorunda. İstediğiniz bir is_valid($_POST[arg]) yöntem haline deyimi eğer varsa bile genelleme olabilir, ama bu durumun ne kadar karmaşık bağlıdır.

Umarım, bu size bu nasıl bir fikir vermek için yardımcı olur. Ben sadece istemci tarafında yapıyor daha güvenli olacak, belirtildiği gibi, bu dinamik formu gönderilmeden önce JavaScript ile girdileri kaldırarak daha kolay olacağını düşünüyorum ve.