PHP ve HTML entegrasyon

5 Cevap php

Ben o sırada ... Bir HTML formu, ardından PHP mantığı, daha sonra bir HTML altbilgi içeren bir php dosyası var.

Ben sayfanın botton bazı php doğrulama mantığı içine formdan değerleri almak için çalışıyorum (ama altbilgi önce) kullanıyorum <?php VALIDATION LOGIC HERE ?>.

Sorun doğrulama bir hata bulduğunda, php mantık ölecek () ve dolayısıyla, benim HTML altbilgi yürütülmez olduğunu.

, () benim php kalıba rağmen yürütmek benim HTML altbilgi almak için bir yolu var mı? ... Ya da benim HTML ve PHP entegre daha iyi bir genel yolu vardır? Teşekkürler! Anyhelp çok takdir.


EDIT: I actually have die() almost everywhere in my code where I am about to connect to a database. If the user credentials are correct, they connect..if credentials are wrong then it will die()..

Bu iyi bir uygulama ve kullanım kalıp () mi? benim sorunun çözümü HTML altbilgi işleme devam etmek için ... YERİNE kalıbın OF getirisini () () kullanmaktır görünüyor.

Ayrıca, böyle mysql_connect (gibi durumlar) ya da () die. HTML işlenmeden önce kalıp () çalıştırıldığında Nasıl kalan HTML sayfasını işleme devam edecek mi? .. Bence mysql_connect () ya da dönüş yok; iyi bir uygulama değil mi?

Çok teşekkürler tekrar peşin! Geribildirim çok yardımcı olmuştur!

5 Cevap

As other states, you should have multiple files; header.php, index.php, footer.php, formvalidator.php. In your index.php file, you should include header.php and footer.php. In the form tag, action is sett to load formvalidator.php

Form validator komut olarak, böyle bir şey olabilir:

  // All form fields are identified by '[id]_[name]', where 'id' is the 
  // identifier of the form type.
  // The field identifier we want to return is just the name and not the id.
  public function getFormData() {
    $formData = array();
    foreach ($_POST as $key => $value) 
    {
      // Remove [id]_ 
      $name = preg_replace('!.*_!', '', $key);

      if (is_array($value)) {
        $formData[$name] = implode(',', $value);
      } else {
        $formData[$name] = $value;
      }
    }
    return $formData;
  }

Now you can loop through the array and validate each field. If you find an error, echo an error message, otherwise process the form.

Update
Answer to your update.

Sen kalıp kullanılır "hiçbir zaman" olmalıdır (). Bunun yerine, çıkış thefunction sen ve bir hata mesajı döndürür. Sadece () ölürsen, yanlış nerede gitti asla bilemezsiniz.

It is not possible to do server validation of a form unless you click the submit button. You can put the code I gave you in the same PHP file as the form, and when you submit, you simply reload the same page (just set action="<?= $_SERVER['PHP_SELF'] ?>")

Eğer alanları doğrulamak istiyorsanız göndermeden önce yapmanız gerekir bu kullanarak javascript gibi örneğin jQuery.validate.

Hmm... seem like you need some more knowledge of how to mix PHP with HTML. Take a look at this beginners guide on how to work with forms in PHP.

Ben daha sonra bir hata / başarı mesajı görüntüleniyor, hata / başarı geri form sayfasına yönlendirme, form işleme ve doğrulama için harici dosyası kullanabilirsiniz.

Ben sadece bir header.php ve footer.php bir dosya olun. Bir hata varsa sadece geri dönmek yerine kalıp.

Sayfanızın en üstünde bu şekilde sadece koyabilirsiniz:

<?php include('header.php');?>

///put in whatever html there may be


<?php 
/// put your form and processing info here
///just return if you need to prevent further processing
?>

///put in whatever html there may be
<?php include('footer.php');?>

ne yapıyorsun yapmak için çok daha iyi yollar vardır. ancak ilk soruyu cevaplamak için, size altbilgi görüntülenen ve kalıp (footer ()) aramak için gerekli html ile bir dize döndürür altbilgi adında bir fonksiyon yaratalım; ama ... neden ölmek kullanıyorsunuz? Sadece hataları saymak ve sonucu yerde göstermek onları değil mi? Eğer komut dosyası bu şekilde öldürmek olmamalı.

Ve ikinci soru için. BenTheDesigner dediğim gibi form action şey yanlış gitti ya da başka bir yere gitmek değilse de forma ya döner doğrular ve bir php komut dosyası işaret ile, bir html sayfasını kullanabilirsiniz. ama çok, orada kalıp () işlevi kaldırmak ve sizi yönlendirmek için başka bir şey aramak gerekir. Eğer html sunum sizin mantığı ayırmak için smarty gibi bir şablon sistemi kullanabilirsiniz. Eğer tek bir dosyada tüm yazmak ama dosya ve altındaki tüm html üstündeki tüm mantık konum yazmak için deneyebilirsiniz. ve kullanın php şeyler, ya da ayrılmakta html sonuçlar için basit conditionals gösterilecek. ama) (kalıbı kullanmayın. sadece sanırım şeyler zorlaştırıyor.

Sitenizi ziyaret kullanıcıya dost bir mesaj gösterecektir olmayacak çünkü kalıbı kullanarak () iyi bir uygulama değildir. Eğer ölmek kullanmak istediğiniz mutlak emin olmalıdır. Eğer bir hack girişimi şüpheli Örneğin, sen prosedürlerde kullanabilirsiniz. Bunun yerine bir şeyler göstermek veya gizlemek için eğer başka bir yapı kullanmayı deneyin. Burada uygulamak isteyebilirsiniz mümkün prototipidir:

  // if there is a validation error, show it, otherwise not
  if ($error == true)
  {
    // show footer
  }

  <!-- Your footer goes normally here -->