将提交的表单信息传回输入字段?

时间:2009-06-16 16:13:12

标签: php html cookies session

我写了一个简单的条目表单,将信息编译到数据库中,我的所需字段出现问题......

如果用户忽略填写必填字段,我会使用表格通过post方法处理数据我希望将他带回原来的表格并输入他/她之前的字段。

如何将信息传回输入标签?没有任何疯狂的脚本有没有简单的方法来做到这一点?我从会话开始,但我意识到我不知道如何将会话中存储的信息放回输入字段,这样用户就不必重新输入他们的所有信息......对于会话而言,cookie会更好吗?

谢谢你们,

亚瑟

6 个答案:

答案 0 :(得分:3)

发布表单时,所有这些变量都会提交到名为$ _POST ['input_name']的全局数组中,并在发布到的页面上提供。很多时候,如果我这么做的话,我喜欢做的只是让那些输入字段的值与发布的字段相同。

例如,假设我们有一个所需的用户名字段,但表单由于某种原因没有验证并回发给自己;我们不希望他们再次输入它:

<input type="text" name="username" value="<?php print $_POST['username']; ?>" />

当然,当他们第一次加载页面时,该值将为空,因此没有任何内容,但如果由于某种原因它返回,则“用户名”字段将已包含输入的信息。

更好的是java脚本验证,因为表单不需要回发,但这样做就好了!

答案 1 :(得分:2)

由于用户将所有数据发布给您,因此您的脚本中也可以使用这些值。因此,在文本字段的情况下,您可以非常轻松地使用它们,但选择选项,复选框和单选按钮需要做更多的工作:

<input id="myid" name="myid" type="text" 
   <?php echo !empty($_POST['myid'] ? "value=\"{$_POST['myid']}\"" ?> />

对于单选按钮,选择选项和复选框,而不是检查值以查看它是否与您当前输出的条目相对应,并打印 selected =“selected”

在验证方面,您还可以进行JavaScript验证,以便尽快向用户提供有关可能的故障的反馈。请记住在服务器端进行相同的验证,以防有人未启用JavaScript或使用JavaScript提交,从而绕过客户端验证。

答案 2 :(得分:1)

不确定这是否是最佳方式,但您可以重定向到“重新加载”页面并使用POST或GET中的值重新输入现有字段。因此,首先验证所需的字段以及缺少的字段,重定向到此页面。然后POST或GET将具有用户填写的所有值(并且缺少的必填字段已经为空),因此您只需循环并加载提供的信息。此外,如果他们提供的信息不正确,您可以手动清除它,这也可以让您标记缺少的必填字段。

另一个选择是将您的验证放在JS中,以便在提交之前知道数据是好的。但是,我不确定是否存在安全问题。

答案 3 :(得分:1)

我检查是否已设置post值,否则你可以显示默认值,然后在输入有焦点时使用一点jQuery删除它

<input type="text" name="first_name" id="first_name" value="<?php if(isset($_POST['myid'])) {   echo $_POST['myid'] } else { echo "Your Name" ?>"></input>

这是jQuery,它将在文本框具有焦点时删除默认的Your Name。

$(document).ready(
function(){
    $.fn.clearDefault = function() {
        return this.focus(function() {
            if( this.value == this.defaultValue ) {
                this.value = "";
            }
        }).blur(function() {
            if( !this.value.length ) {
                this.value = this.defaultValue;
            }
        });
    };
    // clear default textbox entries
    $("#first_name"). clearDefault();
}

);

答案 4 :(得分:0)

答案 5 :(得分:0)

<input type="text" name="username" value="<?php isset($_POST['username']) ? echo $_POST['username'] : null; ?>" />

可以正常使用