PHP VE Javascriipt ile Form doğrulamak?

4 Cevap php

PHP ve JavaScript ile bir form doğrulamak mümkün mü? Şu anda benim varolan formu ama sadece bireysel bazda kullanarak hem de yapmak mümkün.

Benim genel amacı şudur:

  1. Javascript istemci tarafında kullanarak form doğrulamak ve hemen kullanıcıya herhangi bir hata mevcut
  2. Javascript doğrulama geçerse, bir bayrak oluşturulur ve daha sonra PHP komut başlayabilirsiniz.

Benim javascript doğrulama yaparken, ben form etiketi içinde aşağıdaki kodu kullanabilirsiniz:

<form id="Enroll_Form"  action="review.php" method="post" name="Enroll_Form" onsubmit="return Enroll_Form_Validator(this)" language="javascript">

Ben PHP doğrulama işlemek istiyorsanız, ben PHP_SELF dosyası (ya da ben kullanıyorum sadece aynı dosya adı) için eylem yeniden adlandırın ve 'onsubmit' işlevini kaldırmak zorunda duyuyorum.

Herhangi bir fikir?

4 Cevap

UPDATED yorumlarına yanıtta içinde

Her şeyden önce, javascript bariz nedenlerle, güvenli bir validator olamaz! Bu uyarılar ve haber görüntüleme süslü bir yol olabilir ama sadece şeker olabilir!

Gerçek doğrulama değerleri kontrol ve biçimlendirme ile PHP veya diğer sunucu tarafı dili yanı sıra veritabanı tarafında yapılmalıdır!

Bu basit bir script bir akıllı doğrulayıcı inşa nasıl sadece bir demostration, ama tabii kavramının sadece bir kanıtıdır!


DEMO: http://jsbin.com/aceze/29

$(function() {
    $('#myform').submit(function() {
        var error = false; // flag

        $('.email,.digits,.empty,.some').each(function() {

            var check = this.className;

            if (check == 'empty') if (!checkEmpty(this.value)) error = true;

            if (check == 'digits') if (!checkDigits(this.value)) error = true;

            if (check == 'email') if (!checkEmail(this.value)) error = true;

            if (check == 'some') if (!checkSome(this.value)) error = true;

            if (error) {
                $(this).css('border', '1px solid red');
            } else {
                $(this).css('border', '1px solid green');
            }
        });

        if (error) {
            return false;
        }
    });
});

Ardından <form> eylemine ilişkin, bunu php sayfanın yolu olması gerekmez, ancak OR sadece ({[terk POST yapmak için AJAX kullanmanız gerekir 2)]} yerin altındaki Postadölesan parçacıklarını görürsünüz:

  // FIRST SNIPPET action="#"
           if ( error == false ) {
           //if all is ok give our form it's php
           $(this).attr('action','review.php');
           } else {
           // error  
           // place false here so the form don't submit if validation fail!
           return false;
         }

  // SECOND SNIPPET action="review.php"

          if ( error == true ) {
        // form submit only if validation pass
           return false;
           } 

  // THIRD SNIPPET action="#" AJAX

    if ( error == false ) {
           // success
           } else {
           // error  

         }
     // this false prevent the form submit in anycase, cause we use AJAX
     return false;

Ben gerçekten, onsubmit eylem döner false olmayan (javascript) valide form durumunda, formu sadece teslim almazsa {[sorunun ne olduğunu görmüyorum (2)]} javascript etkindir.

En kısa sürede formu teslim alır gibi, php, vb istediğini ne yapmak doğrulamak, hataları dönebilirsiniz

Bunu denedim, ama kafamın üst kapalı değil; o onsumbit olay işleyicisi kullanmak için size formda language="JavaScript" gerekmez. Bu olay true, daha sonra biçim, normal olarak teslim edilecektir değerlendirir eğer (yani PHP bunu görecek ve doğrulama yapabilirsiniz).

Bu istemci tarafı doğrulama dayanarak değil görmek güzel. Bir tarayıcıda JavaScript devre dışı bırakmak için önemsiz bulunuyor. Bir always, kişinin girişini doğrulamak gerekir.

Bu tür şeyler için JS çok fazla güvenmeyin. Evet, kullanıcıların hataları önlemek için doğrulamak, ama birisi kolayca .html oluşturabilir ve yapılacak

<form action="http://yoursite.com/review.php" method="post">
    <input type="submit">
</form>

Ve herhangi bir JS doğrulamasını atlayabilir. Eğer herhangi bir JS doğrulama olmasaydı eğer yaptığınız gibi PHP doğrulamak.