将表单发送到单独的页面进行处理,还是返回到同一页面?

问题描述 投票:0回答:6

将 html 表单发送到单独的页面更好,还是将其发送回同一页面更好??

我一直听到将逻辑与表示分开,所以我想知道是否也应该将我的表单与表单处理程序分开。

截至目前,我正在这样做...

<?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>

这样好吗,或者我应该将 php 与表单完全分离,然后将其中一个包含到另一个中......或者类似的东西

php html forms
6个回答
1
投票

我实际上发现将提交处理逻辑放在一个单独的文件中(在我的类中是一个类)可以让您使逻辑远离演示文稿,但验证/等错误直接出现在您的表单上期望他们这样做。 我建议的一个小例子:

<?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>

然后在form.process.php中

 <?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;
   }

0
投票

正如大多数问题的答案一样,这个问题的答案是:“这取决于情况。”

作为一般规则,最好将代码“处理”提交与仅显示表单的页面分开。 然而,我经常发现,对于较小的形式(即那些没有做太多事情的形式),将逻辑分开所增加的复杂性并不值得将其分开所带来的好处。

经典表单提交的一种常见方法是在

index.php
上显示代码,然后将其提交到
save.php
,然后重定向回
index.php
(或备用页面),因此理论上
POST
将不再是最近显示的页面,并且刷新页面不会重新提交表单(当然,请注意,并非所有浏览器始终遵循该逻辑)。


0
投票

最好分开,分开VIEW + Logic。

最好的方法:CSS在外部文件中,JS在外部文件中,php在外部文件中。


0
投票

您描述的方式适合小页面。如果您想要一些分离,您可以考虑将 HTML 和 PHP 分成两个文件,但您仍然可以将它们保留在同一页面。


0
投票

正如其他人提到的,最好将这两个文件分开。但有时,在同一个文件中处理两者会很方便,这样您就可以在不使用会话的情况下重新填充表单。从而为用户节省了几分钟。


0
投票

我倾向于改变设置不同站点的方式,并且每次我创建一个新站点时它都会发生变化,但我什至开始将我的查询分离到一个 xml 文件中。

当所有东西都有一个家时,您就知道该去哪里修复/增强东西。 提前一小时可以节省未来几天的时间。

如前所述,分离的重要性随着应用程序的规模而增加。 宣传册网站上的简单评论表单——我可以毫无问题地将表单处理放在同一个文件中。

© www.soinside.com 2019 - 2024. All rights reserved.