PHP中的自动后退命令
我在我的网站上有一个表格,里面有一系列的方框。单击submit按钮时,它会检查以确保所有部分都与PHP相关。(即如果电子邮件是电子邮件,如果名称没有无效字符等) 在PHP脚本中,如果发生这种情况,它当前会:PHP中的自动后退命令,php,javascript,html,css,Php,Javascript,Html,Css,我在我的网站上有一个表格,里面有一系列的方框。单击submit按钮时,它会检查以确保所有部分都与PHP相关。(即如果电子邮件是电子邮件,如果名称没有无效字符等) 在PHP脚本中,如果发生这种情况,它当前会: function died($error) { // your error code can go here header( "refresh:0;url=construction.html" ); echo $error; die(); 现在它刷新页面。因
function died($error) {
// your error code can go here
header( "refresh:0;url=construction.html" );
echo $error;
die();
现在它刷新页面。因此,如果你有一件事做错了,它会清除表格。在PHP中是否有一种方法可以让它返回(从而保留填写的表单)
它当前所在的网站是。我相信这可能是JavaScript的一些实现,但这是什么,以及如何格式化,我都不知道
谢谢你的帮助 除了通过php在服务器端进行表单验证外,我强烈建议您通过JavaScript在客户端进行表单验证。
试试看。
为此,您需要一个除了通过php在服务器端进行表单验证之外,我强烈建议您通过JavaScript在客户端进行表单验证。
试试看。
为此,您需要一个PHP的实现方式如下(使用会话): 希望这能让你更容易理解你的处境
Edit:
别忘了添加session_start()
在construction.php
中,php的实现方式如下(使用会话):
希望这能让你更容易理解你的处境
Edit:
别忘了添加session_start()
位于construction.php
的顶部
你该怎么办 Javascript(客户端) 使用Javascript,您可以预先验证表单,以避免不必要的服务器往返,并立即向用户提供反馈。有很多jQuery、dojo、MooTools等用于表单验证的实现。但是别忘了,Javascript是可以关闭的,因此您也必须在服务器端验证所有内容强> PHP(服务器端) 一个好方法是使用现有的验证类,比如Zend_Validate,甚至Zend_表单。Zend_Form可以非常轻松地将经过验证的post数据反馈到表单,例如
$Form->populate($data)
任何其他支持表单的框架或库也会有所帮助。当然,您不需要库,所以您需要了解如何使用原始有效的post数据填充表单。如果这样做,请确保可以将$\u 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),这意味着您可以添加客户端验证(Javascript)以提高可用性和速度,但您永远不能因为安全原因而忽略服务器端验证
将有效数据反馈回表单也是一种常见做法,因为不这样做对用户不友好
您的函数死了($error)看起来有些奇怪和不必要,验证失败并不是死的理由
你该怎么办
Javascript(客户端)
使用Javascript,您可以预先验证表单,以避免不必要的服务器往返,并立即向用户提供反馈。有很多jQuery、dojo、MooTools等用于表单验证的实现。但是别忘了,Javascript是可以关闭的,因此您也必须在服务器端验证所有内容强>
PHP(服务器端)
一个好方法是使用现有的验证类,比如Zend_Validate,甚至Zend_表单。Zend_Form可以非常轻松地将经过验证的post数据反馈到表单,例如$Form->populate($data)
任何其他支持表单的框架或库也会有所帮助。当然,您不需要库,所以您需要了解如何使用原始有效的post数据填充表单。如果这样做,请确保可以将$\u 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所描述的那样完成此操作。您可以“强制”浏览器返回一页,但不能保证浏览器会记住并保留表单字段值
解决方案是在验证失败时用用户提交的值填充字段。例如:
$email = '';
if( !empty( $_POST[ 'email' ] ) ) {
$email = $_POST[ 'email' ];
}
?>
<input type="text" value="<?php echo $email; ?>" name="email" />
<?php
if( /* email didn't validate */ ) {
echo 'Please give a valid email address';
}
$email='';
如果(!em
$email = '';
if( !empty( $_POST[ 'email' ] ) ) {
$email = $_POST[ 'email' ];
}
?>
<input type="text" value="<?php echo $email; ?>" name="email" />
<?php
if( /* email didn't validate */ ) {
echo 'Please give a valid email address';
}