我的网站上有一个表格,其中有一系列框。单击提交按钮时,它会使用 PHP 检查以确保所有部分都是相关的。 (IE 如果电子邮件是电子邮件,如果名称没有无效字符等)
如果发生这种情况,在 PHP 脚本中,它当前会:
function died($error) {
// your error code can go here
header( "refresh:0;url=construction.html" );
echo $error;
die();
现在它刷新页面。所以如果你做错了一件事,它会清除表格。在 PHP 中有没有一种方法可以让这个而不是返回(从而保留填写的表格)。
它当前所在的网站是here .我相信它可能是 JavaScript 的某种实现,但我不知道这是什么以及如何格式化它。
感谢您的帮助!
最佳答案
您所谓的“确保是否相关”称为验证,是提交表单时的正常且必要的步骤
您总是需要服务器端验证(在您的情况下是 PHP),这意味着您可以为了可用性和速度添加客户端验证(Javascript)但您永远不能省略服务器端验证因为安全原因
将有效数据反馈给表单也是一种常见做法,因为不这样做对用户不友好
你的函数 died($error) 看起来很奇怪而且没有必要,验证失败不是死亡的理由。
播种你应该怎么做?
Javascript(客户端)
使用 Javascript,您可以预先验证表单以避免不必要的服务器往返,并立即向用户提供反馈。有很多使用 jQuery、dojo、MooTools 等实现的表单验证。但不要忘记,Javascript 可以关闭,因此您也必须在服务器端验证所有内容!
PHP(服务器端)
一个好方法是使用现有的验证类,如 Zend_Validate 或什至 Zend_Form。 Zend_Form 使得将经过验证的发布数据反馈回表单变得非常容易,例如$form->populate($data)
.
任何其他支持表单的框架或库也会有所帮助。当然,您不需要一个库,因此您需要阅读有关如何使用原始有效发布数据填充表单的信息。如果这样做,请确保您可以将 $_POST 数组的副本发送回客户端,如果原始值有效,则在客户端存储原始值,并为无效的字段发送标志/消息。将其集成到标记中的基本方法如下所示:
<input type="text" value="<?php echo ($validatedPost['email']['isValid']) ? $validatedPost['email']['value']: '' ?>" name="email" />
<?php if ($isPostBack && !$validatedPost['email']['isValid']) : ?>
<p class="invalid"><?php echo $validatedPost['email']['message']; ?></p>
<?php endif; ?>
关于php - PHP 中的自动返回命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7049892/