PHP ile Form bilgileri doğrulayarak arkasında mantık

3 Cevap php

Im PHP ile benim ilk form doğrulama çalışıyor.

Ben mantığı ile bazı rehberlik gerekir.

Ben purchase.php (formuna sahip olduğu) ve yorumla-purchase.php var (OTURUM değişkenlerini ayarlar ve girilen kullanıcı verilerini görüntüler)

Alanlardan herhangi doğrulama başarısız olursa ben kullanıcı purchase.php yorumlayan almak istemiyorum

Ben orada doğrulama denetimi ve daha sonra bir hata mesajı ile purchase.php geri yönlendirme, yorum-purchase.php komut dosyası kullanıcı gönderiyveyaolmalı?

veya

Ben "= form eylemi vb $ _SERVER ['PHP_SELF'] ile bir if / else deyimini kullanarak" ve kendisi purchase.php sayfadaki tüm doğrulama tutmak ve her şeyi doğrulama geçerse yalnızca alım-incelemesi çalıştırmak bırakmalıyız?

Sorry fveyathe confusing question but i myself am very confused...

3 Cevap

Peki, nerede ve ne zaman PHP kodu yürütüldüğünde ilgili bir yanlış anlaşılma var gibi görünüyor. PHP ile (ve istemci üzerinde herhangi bir JavaScript doğrulama bir hain kullanıcı tarafından etrafında çalışmış olabilir gerektiğini çünkü) - - Eğer sunucu tarafında kullanıcı girişi doğrulamak istiyorsanız, kullanıcı verilerini yayınladıktan sonra PHP doğrulama yalnızca oluşabilir. Bu özgün form veya farklı bir sayfa olmak - Bu hangi sayfa kullanıcı mesaj veri olursa olsun.

İsterseniz doğrulama başarılı ve farklı bir sayfaya doğrulama yo zaten bir yönlendirme yapmak gerekir başarısız olup olmadığını Yani, sizin durumunuzda kullanıcıların bir sayfaya gitmek için.

Bu durumda iki yol var:

  • kullanıcı Purchase.php istekleri ve formu doldurur
  • doğrulama sayfasına kullanıcı ileti verileri
  • if data is valid -> display purchase review information
    else -> re-display form page and have user re-enter data

Yani Purchase.php mesajlar kendisine, orada doğrulamak ve veri geçerli olup olmadığını review.php yönlendirebilirsiniz eğer. Hangi başarılı durumda 2 yönlendirmeleri yapmak ve başarısız durumda sadece 1 yazı yapmak demektir.

Eğer review.php doğrudan gönderebilir ve orada doğrulamak eğer Öte yandan, sen başarısız durumda 1. başarılı durumda yazı ve 2 var.

Yukarıdaki olursa olsun bunu dönmeye nasıl doğrudur - Eğer başarılı durumda form doğrulama ve alım inceleme yapmak için aynı yerde mantık koymak hangi durumda form ve inceleme için aynı URL kullanmadığınız sürece.

Bu yardımcı olur umarım.

Bu birçok kişi kendilerine sormak bir soru, ve tek bir doğru cevabı muhtemelen yoktur ...

Ben genelde ne, sizin durumunuzda olduğunu:

  • purchase.php formu görüntüler
  • kendisi o biçim mesajlar (ie, purchase.php)
  • when data has been submitted, it is dealt with -- still in purchase.php
    • Bir hata varsa (like something not OK in the input), sen, gerçekten kolay bu şekilde formu yeniden görüntüleyebilirsiniz: Zaten kullanıcı tarafından tiplendirildi her değerlere sahip
    • hiçbir hata varsa, sen verilerle için var ne yapabilirim; gibi o ihtiyacınız buysa, oturumda ayarlayın, ya da örneğin, veritabanına kaydetmek.
  • only when everything was OK (data validation OK and storage OK), you redirect to "confirm.php"
    • Bu onay sayfası bir "thanks for your purchase" diyerek mesajı, ya da böyle bir şey göstermek dışında bir şey yok.


It means putting more stuff in your purchase.php, yes :

  • (Yeniden) şeklinde gösterimi
  • girişi ile ilgili

Ancak, bu şekilde, yeniden görüntülemek formu, bir doğrulama hatası olduğu zaman kullanımı ilk, yazdığınız ne ile önceden doldurulmuş gerçekten kolaydır.

Siz fonksiyonları / sınıfları / yöntemlerini kullanabilirsiniz hatta bazı dosyaları dahil olsa da, un-okunabilir / un-maintenable kod büyük bir öbek ile sona değil ...

Başka bir sayfaya form mesaj varsa, tekrar görüntülemek formu için gerçekten zor olacak ... sen yönlendirmeleri kullanıyorsanız, size URL her şeyi geçmek olacak, ve bir karışıklık {[(0 olacak )]}


Here, it means I would totaly remove your review-purchase.php file ; and transform it to a confirmation page, so the user knows everything was OK and his purchase is being take care of.

Ben bu sizin son paragrafta demek oldukça buydu, aslında :-) varsayalım


Just beware : you have to think about escaping data before injecting it back into the form (see htmlspecialchars and/or htmlentities) ; that is true for everything you get from the user *(And, probably, for PHP_SELF too, I'd say)* ;-)

Bunu yapmanın en yaygın yolu purchase.php tüm doğrulama denetimleri yapmak olacaktır. Doğrulama hataları varsa bu şekilde, bu kullanıcı zaten girmiş tüm bilgileri yeniden görüntülemek formu daha kolay.

Doğrulama geçerse bir veritabanı kullanarak değilseniz, bir veritabanında belirlenen gerekli satın alma bilgileri ile review-purchase.php için bir yönlendirme yapabilir, ya da muhtemelen $_SESSION.

Eğer fonksiyonların içine doğrulama kodunu ayırabilirsiniz, ve şablonlar içine ekran kodu dahil edilecek olursa, size gitmek hangisi dosya bunları kullanmak için izin verecek mantık güzel bir ayırma elde edebilirsiniz. Siz, yani bu şekilde bir yönlendirme önlemek mümkün olabilir. $ _POST girişi varsa purchase.php kontrol ebil, bunu doğrulamak ve form şablonunu yeniden göstermek, ya satın alma yorum şablonu gösterilecek.