gpt4 book ai didi

php - PHP表单处理器错误回传

转载 作者:行者123 更新时间:2023-12-03 07:55:48 24 4
gpt4 key购买 nike

我有一个基本的PHP表单页面,其中包含大量数据,一旦完成,这些数据将保存到MySql的约4-5个不同的表中。由于构造此保存例程将需要一些PHP,因此我希望POST操作不要指向PHP_SELF,而是指向一个单独的PHP文件进行处理。

如果处理器返回错误,则在提交之前将所有常规数据(例如电话号码,电子邮件,邮政编码等)进行验证,然后再将其传递给处理器脚本...

在保持数据输入的同时,指向原始表单页面(HTTP_REFERER)的最佳实践方法是什么?

表单页面:

<form action="processor.php" action="post">
<!-- lots of fields -->
<input type="submit" id="submitButton" name="Save" value="Save" />
</form>

处理器页面:
<?php
if ( isset($_POST['date']) && ($_SERVER['HTTP_REFERER'] == "form.php") )
{
$errors = false;

//attempt to put data in database

if ( $errors )
{
//Pass back to the form.php page with error message and all data intact
}
}
?>

最佳答案

我之前遇到过这个问题,我们如何解决这个问题的方法是将所有字段放入 session 中,然后使用header(“Location:form.php”)重定向回form.php。

当数据发布到表单时,我们将$ _REQUEST存储到$ _SESSION ['post'];中。如果验证失败,我们将其发送回表单,填充字段并取消 session 设置。

所以举个例子

$_SESSION['post']['field_a'] = $_REQUEST['field_a'];
$_SESSION['post']['field_b'] = $_REQUEST['field_b'];

有了一些花哨的命名约定,您就可以循环播放以使其变得容易。

然后,在“表单”页面上,我们只是检查是否有数据,或者只是回显数据。
$str_field_a = @$_SESSION['post']['field_a'];
...
<input name="field_a" value="<?php echo $str_field_a; ?>" />
...
unset($_SESSION['post']);

这可能是一种麻烦的方式,但已证明对我们的目的有效。只是以为我会分享。

关于php - PHP表单处理器错误回传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5189670/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com