2009-08-15 24 views
0

将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和只包含一个到另一个...或类似的东西

+0

仅供参考,你真的不打印表单值时需要的isset()函数。如果您收到警告,可以使用'display_errors(E_ALL^E_STRICT)'来隐藏它们。 – whichdan 2009-08-15 05:37:12

回答

1

其实我觉得有中,则包含一个单独的文件提交处理逻辑(在我的课一类),您可以从演示让你的逻辑了,但有验证错误的/ etc直接显示在您的形成你期望的地方。什么我提出一个小例子:

<?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 +逻辑。

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

0

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

0

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

0

我倾向于改变我设置了不同的网站的方式,它摇身一变我每次做一个新的时间,但我甚至开始连我的查询分隔成XML文件。

当一切都有一个家,你知道去哪里去修复/增强的东西。一个小时可以节省将来的日子。

如前所述,分离的重要性随应用程序的大小而增加。小册子网站上的简单评论表格 - 将表格处理权限放在同一个文件中是没有问题的。

相关问题