如何将表单的内容发布到它所在的页面?

时间:2009-01-24 15:41:27

标签: php html

在Yahoo或Google以及许多网站中,当您填写表单时,如果您的表单有任何错误,它会被重定向到同一页面。 请注意,表单中的数据保持不变。我的意思是文本字段中的数据保持不变。 我试过

。它被重定向到页面,但表单的内容被清除。 我想要显示数据。

如果他忘记检查接受条款和条件复选框,如果他必须再次填写整个表单,那么你知道对用户来说会有多累。 需要帮助!

8 个答案:

答案 0 :(得分:2)

你需要自己做。页面发布后,您将可以访问用户通过$ POST ['...']输入的所有表单值。然后,您可以使用此数据重新填充表单字段。

答案 1 :(得分:1)

这不是自动完成的。他们从post / get获取值,然后将用户键入的值分配给模板。你看到的是从处理用户值的脚本生成的html。

答案 2 :(得分:1)

如果您将表单和表单数据处理放在同一个脚本中,则可以轻松打印出已在表单中输入的数据,例如:

$valid = false;
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_POST['name']) && $_POST['name'] == 'Hugo') {
        $valid = true;
    } else {
        echo '<p>Seriously, you have to enter "Hugo"!</p>';
    }
    // more data processing
    if ($valid) {
        echo '<p>Everything’s fine!</p>';
    }
}
if (!$valid) {
    echo '<form action="" method="post">';
    echo '<p>Please enter "Hugo": <input type="text" name="name" value="', (isset($_POST['name']) ? htmlspecialchars($_POST['name']) : ''), '"></p>';
    echo '<p><input type="submit"></p>';
    echo '</form>';
}

嗯,这不是一个很好的例子,但这就是它的工作原理。

答案 3 :(得分:1)

许多框架都会为您完成这项工作,所以不要浪费您的时间手动执行此操作

答案 4 :(得分:1)

以下是我用于非常简单网站的修改版本,我不希望/需要整个框架来完成工作。

function input($name, $options = array()) {
    if(!isset($options['type'])) $options['type'] = 'text';

    $options['name'] = $name;

    if(isset($_POST[$name]) && $options['type'] != 'password') {
        $options['value'] = htmlspecialchars($_POST[$name]);
    }

    $opts = array();    
    foreach($options as $key => $value) {
        $opts[] = $key . '="' . $value . '"';
    }

    return '<input ' . implode(' ', $opts) . '/>';
}

<select&gt;和<textarea>等我有一些相似的功能,等等)

当您构建字段时,您可以执行以下操作:

First Name: <?=input('first_name')?>
Last Name: <?=input('last_name')?>
Password: <?=input('password', array('type' => 'password'))?>

如果您在与表单本身相同的页面中处理表单,则会在出现任何错误时自动填写表单。但是,大多数框架都会为您完成所有这些(并且比上面的代码更好),我个人建议CakePHPCodeIgniter

答案 5 :(得分:0)

您必须检查同一文件中的数据,如果它是正确的,那么您将重定向到正确的位置。然后你可以使用用户发布的$ _POST或$ _GET信息,他可以修复错误。

答案 6 :(得分:0)

您可以使用两种方法(它们不是互斥的):

  • 在提交表单之前,使用JavaScript帮助用户。这样,您可以将往返保存到服务器。 你要的是:
  • 在表单中,使用从服务器发回的数据填充字段的value属性。例如:您发送一个字段name,您在PHP中获得$ _POST ['name'](假设您使用了method='post'。如果您发回数据并修改该字段,则添加{{1}你应该得到你的数据。

答案 7 :(得分:0)

如果您正在使用模板或框架系统(我已将Smarty引擎合并到我的几个项目中),您通常可以调整模板,以便它们在检测到{{1}时自动使用值填充字段设置与其字段对应的值。

至于密码,据我所知(我可能是错的):这是一种惯例,可以最大限度地缩短密码通过网络发送的时间,从而缩小了可能嗅探到的人的窗口。拿起文字。将密码字段留空是完美的做法。