Taşıma, ya da tekrar aynı sayfada için ayrı sayfalara formları göndermek?

6 Cevap php

O ayrı bir sayfaya bir html formu göndermek, ya da aynı sayfaya geri göndermek için iyi midir?

i sunum ayrı mantığına işitme tutmak, bu yüzden de benim form eylemcilerden benim formları ayırmak gerektiğini merak ediyordum.

Şu an itibariyle, Im yapıyor ...

<?php

if(isset($_POST['submitted'])){

  //Validate the form
  if(empty($_POST['name'])){
    $errors['name'] = 'Please enter your name';
  }

  //IF no errors INSERT INTO database and redirect
}
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  <input type="text" name="name" value="<?php if(isset($_POST['name'])) echo $_POST['name']; ?>" />
  <?php if(isset($errors['name'])) echo '<span class="error">'.$errors['name'].'</span>'; ?>
  <input type="submit" />
</form>

Bu iyi mi, yoksa tamamen formdan php ayırmak ve sadece diğer içine bir ... ya da benzer bir şeyler içermelidir

6 Cevap

Ben aslında (benim sınıf bir sınıf) uzakta sunum mantığı tutmak, ancak doğrulama / vb hataları beklediğiniz form üzerinde doğrudan görünür olmasını sağlar dahil olacak ayrı bir dosyada teslim işleme mantığı olan bulabilirsiniz onlara. Ben teklif ne küçük bir örnek:

<?php // form.php
  $form = array(
     "test"=>"default value",
  );
  $errors = array();

  if (count($_POST)) {
    include "form.process.php";
  }

  if (count($errors)) {
    echo "<ul class='errors'>";
    foreach ($errors as $error) {
      echo "<li>".htmlentities($error)."</li>";
    } 
    echo "</ul>";
  }
?>
<form method="POST"> <!-- no action means submit to the same page you are on -->
<input type='text' name='test' value='<?php echo $form["test"]; ?>'/>
<input type='submit'>
</form>

Sonra form.process.php içinde

 <?php
   if (isset($_POST['test')) {
     $test = $form['test'] = $_POST['test'];
     if (!trim($test)) // empty string? {
       $errors[] = "Please fill in test field";
     }
   }

   if (!count($errors)) {
     header("Location: formsubmitted.php");
     exit;
   }

Soruların çoğuna cevap olarak, bu bir cevap: "değişir."

Genel bir kural olarak, bu kod "işleme" sadece formu sergiliyor sayfasından ayrı bir teslim olması daha iyidir. Ancak, sık sık küçük formları (yani, çok yapmıyor olanlar) için bulmak, bunun dışında mantık çekerek ekledi karmaşıklığı onu ayıran yararları değmez.

Klasik formu teslimi için bir ortak yaklaşım [(0)] index.php, save.php, diyelim ki, onu göndermek ve daha sonra daha sonra geri {yönlendirmek, diyelim ki, üzerinde kodunu görüntülemek için } (veya bir başka sayfa), böylece teorik POST artık en son görüntülenen sayfa olacak ve sayfayı yenileyerek tüm tarayıcılar bu itaat, elbette, belirterek (formu yeniden olmaz mantık her zaman).

o, bölmek VIEW + Mantık bunu ayırmak daha iyidir.

En iyi yolu: dış dosya harici bir dosyada, JS CSS, harici bir dosyada php.

Eğer açıklanan yolu küçük sayfalar için gayet iyi. Bazı ayrılık istiyorsanız, iki dosya içine HTML ve PHP ayıran düşünebilirsiniz, ama yine aynı sayfada yer tutabilirsiniz.

Diğerleri de söylediğim gibi, iki ayrı dosyalar için iyidir. Ama bazen, bu kullanıcılar için birkaç dakika tasarruf session.Thus kullanmadan formu yeniden doldurmak böylece aynı dosyanın içinde hem işlemek için uygundur.

Ben farklı siteler kurmak şekilde değişebilir eğilimindedir, ve ben yeni bir tane yapmak her zaman morphs, ama ben bile bir xml dosyası içine bile benim sorguları ayıran başlangıç ​​ettik.

Her şeyin bir ev var ne zaman nerede geliştirmek / şeyleri düzeltmek için gitmek biliyorum. Bir saat kadar ön gelecekte gün kaydeder.

Daha önce belirtildiği gibi, ayırma önemi uygulamanın büyüklüğüne artar. Bir broşür web sitesinde basit bir yorum formu - Ben hiçbir sorun doğru aynı dosyada form işleme koyarak var.