PHP中的自动后退命令
Automatic Back Command in PHP
我的网站上有一个表单,里面有一系列的框。当点击提交按钮时,它会进行检查,以确保所有部分都使用PHP相关。(IE,如果电子邮件是电子邮件,如果名称没有无效字符等(
在PHP脚本中,如果发生这种情况,它当前会:
function died($error) {
// your error code can go here
header( "refresh:0;url=construction.html" );
echo $error;
die();
现在它会刷新页面。因此,如果你做错了一件事,它会清除表单。在PHP中有没有一种方法可以让它返回(从而保留已填写的表单(。
它目前所在的网站就在这里。我相信它可能是JavaScript的某种实现,但这是什么以及如何格式化它,让我难以捉摸
谢谢你的帮助!
-
您所称的"确保相关事件"被称为验证,是提交表单时的正常和必要步骤
-
您总是需要服务器端验证(在您的例子中是PHP(,这意味着为了可用性和速度,您可以添加客户端验证(Javascript(,但由于安全原因,您永远不能省略服务器端验证
-
将有效数据反馈到表单也是一种常见的做法,因为不这样做对用户不友好
-
您的函数dead($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
session_start();
function died($error) {
//Store the input
$_SESSION['temp_form'] = array(
'name' => $_POST['name'],
'email' => $_POST['email']
);
// your error code can go here
header( "refresh:0;url=construction.html" );
echo $error;
die();
}
?>
在construction.html
上(如果可以的话,您可能希望使其成为.php
,或者使.html
绑定到php:
<input type="text" name="name" value="<?php if( isset($_SESSION['temp_form']['name']) ) echo $_SESSION['temp_form']['name']; ?>" />
<input type="text" name="email" value="<?php if( isset($_SESSION['temp_form']['email']) ) echo $_SESSION['temp_form']['email']; ?>" />
希望这能让你更容易理解你的处境!
Edit:
不要忘记在construction.php
的顶部添加session_start();
。
我强烈建议您通过JavaScript在客户端进行表单验证,此外还通过php在服务器端进行表单验证
试试jQuery表单验证插件
为此,您需要对jQuery 有一个基本的了解
您应该将所有信息保存在一个会话中(或者可能提交到同一页面并省略refresh?(,然后在生成表单时,检查表单以根据您的数据填写表单。
您不能像单独使用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';
}
- PHP:运行后变量不工作“;如果“;命令
- 用php制作命令系统
- 如何使用array_merge在PHP/Higharts中显示未引用的命令
- PHP:在web浏览器中输出system/Shell_exec命令输出
- Javascript echos PHP命令,而不是PHP变量
- 我无法从 PHP 执行 pdf 生成 python 命令
- 单击链接时运行 PHP SQL 查询命令
- 如何从PHP或Javascript调用python程序(具有命令行参数)
- 如何从php执行命令提示符
- PHP计时器等待30秒,然后运行一个命令
- 从javascript调用php命令
- PHP能检测到不完整的xmlhttprequest.send(data)命令吗?
- 执行PHP "action=add"命令,然后转移到另一页
- 如何将用户输入发送到php,执行SQL命令并显示php的输出
- 页面切割命令在php的POS打印机
- 转换谷歌图表为PNG图像自动当我运行php文件在命令行(不在浏览器)
- PHP:调用Javascript命令
- PHP执行命令节点
- PHP中的自动后退命令
- 在PHP命令行中访问会话