提交后如何在文本输入中保留值?

时间:2010-02-19 12:53:48

标签: php validation forms

我想验证表单以确保用户以姓名和姓氏书写。

如果用户只使用姓氏书写,则表单应再次显示,并在姓氏字段旁边显示错误消息,但名称值应仍然

我不知道怎么做,呵呵。我只是一个新手PHP程序员。

这是我到目前为止所拥有的:

<html>
<head>
</head>

<body>
    <form action="formprueba.php" method="get">
        <dl>
            <dt>Last Name:</dt>
            <dd><input type="text" value="" name="name" />
                <?php if((isset($_GET['name'])) && ($_GET['name'] == "")){
                    echo "Please write a correct name.";
                }
                ?>
            </dd>                

            <dt>Last Name:</dt>
            <dd><input type="text" value="" name="lastname" />
                <?php if((isset($_GET['lastname'])) && ($_GET['lastname'] == "")){
                    echo "Please write a correct last name.";
                }
                ?>
            </dd>

            <br />                
            <dt>
                <input type="submit" value="enviar" />
            </dt>
            <input type="hidden" name="enviado" value="j"/>
        </dl>
    </form>
</body>

另外,我确信这个验证很糟糕,如果你有几分钟,如果有人可以告诉我一种更有效的验证方法(不使用第三方插件),我会非常喜欢。

非常感谢。

8 个答案:

答案 0 :(得分:15)

将您需要的变量放入input-tag的“value”字段中,如下所示:

<input type="text" value="<?php echo htmlspecialchars($_GET['lastname']); ?>" name="lastname" />

并且至少引用某人可能放入的HTML字符非常重要(通过htmlspecialchars)。

答案 1 :(得分:2)

  

如果用户只写了他的最后一个   名称,表格应再次显示   姓氏旁边的错误消息   字段,但名称值仍应   在那里。

只需从$_GET(您正在使用的表单方法)获取其值

<input type="text" value="" name="lastname" value="<?php echo $_GET['lastname'];?>" />

依旧......

出于安全原因,您必须也使用htmlspecialchars功能。

<强> More Information Here.

答案 2 :(得分:1)

如果您正在做类似

的事情
<input type="text" value="" name="lastname" value="<?php echo $_GET['lastname'];?>" />

永远不会忘记检查/转义您使用例如显示的值ヶ辆()。 否则你会接受完全琐碎的javascript注入攻击!

答案 3 :(得分:0)

您可以使用客户端javascript - 以这种方式保存到服务器的行程。

缺点是:您实际上只能进行基本检查,因为用户无法信任(当然,对于安全措施)。在进行昂贵的服务器之前,您至少可以“标记”无效模式。

答案 4 :(得分:0)

只是一个小小的注释我必须学习困难的方法:显示错误消息并敦促用户按下后退按钮(或使用javascript执行相同操作)通常保留值输入字段。

这似乎完全取决于浏览器,例如对我来说它适用于Safari,但不适用于Firefox ......

答案 5 :(得分:0)

在服务器端进行验证很有用。你的方法似乎是正确的。你可以保持一个标志,告诉你在页面结束时天气是否成功。

实施例

$标志= TURE;

<?php if((isset($_GET['lastname'])) && ($_GET['lastname'] == "")){
       echo "Please write a correct last name.";
       $flag="false";
}
?>

然后在页面底部  如果($标记==真)        echo“form submit”;

关于值的持久性,其中一个人正确地提到了为输入标签添加值

value="<?php echo $_GET['lastname'];?>"

希望这有帮助。

答案 6 :(得分:-1)

将此添加到您首次声明的表单中:

<form onsubmit="event.preventDefault(); validateMyForm();">

答案 7 :(得分:-2)

我认为,如果你可以依赖Javascript,Javascript是最好的答案。但客户端脚本可能会被覆盖。因此,稍后在服务器上验证您的输入。