Form doğrulama başarısız olduğunda, nasıl yeni hata bilgisini geçmek için deneyin?

5 Cevap php

PHP form doğrulama sınıfı geliştiriyorum. Form doğrulama başarısız olduğunda, ben kolayca formun html sayfasında ancak hata bilgileri olmadan yeniden yönlendirebilirsiniz. Alanlar neden başarısız oldu ve hangi ben belirli hataları ile formun sayfasına yönlendirmek istiyoruz.

Bunu nasıl yapmalıyım? Ben GET veya POST aracılığıyla geri bilgi göndermek gerekir? ve hangi biçimde? Gerçekten insanlar bu sorunu ele görmek için bazı kod görmek istiyorum.

Teşekkürler!

5 Cevap

I $_SESSION Çünkü kullanarak user187291 önerisiyle katılıyorum:

  • Bu $_GET (bir durum mesajı için statik bir bağlantı istiyorsanız asla) gibi kullanarak URI kaçırmak değil. URI öyle diyor çünkü Kullanıcılar formu ile sayfasına "Geri" tuşuna basın ve hala bir durum mesajı görebiliyordu.
  • Baskı ve unset aynı vadede, bir kereden fazla kullanmak mümkün olmayacaktır (ne istediğiniz hangisi?!)

AJAX ile gidiyoruz, $_GET daha yaygın bir geçerlilik denetleyicisi yapıyorsun değerleri, retreiving için kullanılır.

Sen header () işlevini kullanabilirsiniz. Dolayısıyla, sadece yayınlanmıştır alanları kontrol edin:

if(!$form->valid()){
    $msg = "Form is not valid";
} else { 
    //Don't know if you want this
    $msg = "Form is valid";
}

header("Location: [page where you came from]?msg=" . urlencode($msg));

Sonra kullanmak yönlendiriliyorsunuz sayfa

if(isset($_GET['msg]))
    echo urldecode($_GET['msg']);

mesajı yankı. Eğer başlık işlevi yerde başka almak değişkenleri kullanıyorsanız, tabii ki, kullanmak &msg=" . urlencode($msg). (Ayrıca, kullanıcı sunulan değerler döndürmek isteyebilirsiniz, bu yüzden 1 hata yaparsa kullanıcı tekrar tüm formu doldurmak zorunda değildir.

yaklaşımlar vardır

  • Dediğin gibi geri yönlendirme yaparken GET hataları geçmek
  • hatalar için formu sayfası onay Oturum üzerine, hata bilgi depolamak için oturumlarını kullanmak
  • hata mesajı ile birlikte, yine başarısızlığından sonra sadece bir çıkış formu yönlendirme yok
  • ajax gönderdiğinde

kullanım için hangisini uygulamaya bağlıdır. Çoğu uygulamalar oturumları için yöntem en uygundur.

Böyle bir şey:

/ / Sözde Kod

function isValid($parm) {
   $return = false;
   if(preg_match(/^[a-zA-Z]+$/, $parm) {
      $return = true;
   }
   return $return;
}

$firstname = $_GET["fname"];
$lastname  = $_GET["lname"];

$validFirstName = isValid($firstname);
$validLastName  = isValid($lastname);

if($validFirstName == true && $validLastName == true) {
   echo "It's all good";
   // Do what you need to like, Submit
} else {
   echo "Please retry";
   // Display error message
}

Ben aşağıdaki benzer $ _POST ile ara bir sınıf kullanmak:

// create the object
$post = new PostData();

// register your requirements... write whatever methods you need
// for each call,read $_POST, check criteria, and mark the field
// as good or bad...
$post->required ('LastName');
$post->required ('FirstName');
$post->numeric ('Age');
$post->optional ('MiddleInitial');
$post->regExp ('/\d{3}/','AreaCode');
$post->email ('Email');

// check the status
if (!$post->isValid ())
{
    $_SESSION['FailedPostData'] = $post;
    header ('Location: page.php');
}

// normal form processing

Sonra, page.php, sen FailedPostData oturumda ise, bakın bilgileri girilen son kez bulmak için okumak, hem de hangi başarısız alanlar olabilir. Ben formu girişleri yeniden doldurmak ve hataları işaretlemek kolayca bana izin makrolar ile bir şablon motoru kullanabilirsiniz. Aksi takdirde basit bir formu için kod sürü sonunda olabilir ...

Ayrıca bayat FailedPostData oturumda asmak ve şeyleri karıştırmayın olmadığından emin olmak için bir mekanizma gerekir.