将 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 // 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;
}
正如大多数问题的答案一样,这个问题的答案是:“这取决于情况。”
作为一般规则,最好将代码“处理”提交与仅显示表单的页面分开。 然而,我经常发现,对于较小的形式(即那些没有做太多事情的形式),将逻辑分开所增加的复杂性并不值得将其分开所带来的好处。
经典表单提交的一种常见方法是在
index.php
上显示代码,然后将其提交到save.php
,然后重定向回index.php
(或备用页面),因此理论上POST
将不再是最近显示的页面,并且刷新页面不会重新提交表单(当然,请注意,并非所有浏览器始终遵循该逻辑)。
最好分开,分开VIEW + Logic。
最好的方法:CSS在外部文件中,JS在外部文件中,php在外部文件中。
您描述的方式适合小页面。如果您想要一些分离,您可以考虑将 HTML 和 PHP 分成两个文件,但您仍然可以将它们保留在同一页面。
正如其他人提到的,最好将这两个文件分开。但有时,在同一个文件中处理两者会很方便,这样您就可以在不使用会话的情况下重新填充表单。从而为用户节省了几分钟。
我倾向于改变设置不同站点的方式,并且每次我创建一个新站点时它都会发生变化,但我什至开始将我的查询分离到一个 xml 文件中。
当所有东西都有一个家时,您就知道该去哪里修复/增强东西。 提前一小时可以节省未来几天的时间。
如前所述,分离的重要性随着应用程序的规模而增加。 宣传册网站上的简单评论表单——我可以毫无问题地将表单处理放在同一个文件中。