我想验证表单以确保用户以姓名和姓氏书写。
如果用户只使用姓氏书写,则表单应再次显示,并在姓氏字段旁边显示错误消息,但名称值应仍然。
我不知道怎么做,呵呵。我只是一个新手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>
另外,我确信这个验证很糟糕,如果你有几分钟,如果有人可以告诉我一种更有效的验证方法(不使用第三方插件),我会非常喜欢。
非常感谢。
答案 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是最好的答案。但客户端脚本可能会被覆盖。因此,稍后在服务器上验证您的输入。