即使在页面被重定向回后如何保留表单值

How to keep form values even after page is redirected back

这不是一个简单的 "after post" 情况,因为页面被重定向回此处。

我的表单有点大,大约有 20 个或更多输入字段。

因此,用户填写表单并提交,在服务器端验证后(如果有错误),用户将被重定向回与表单相同的页面。但是没有价值观。所以,他每次只因为一个错误的输入就不得​​不把整个东西都填满。

那么,如何克服这个问题...

我看到有人建议使用 $_SESSION 来保存这些数据。安全吗?我有 20 多个输入,这是大量的数据..

如果您没有使用特定的 PHP 框架,有几种方法可以做到这一点。

1) 是的,提交后遇到某个无效字段可以使用$_SESSION来存储信息。请记住使用 session_start() 以便 start/access 会话。这是一种安全的方法,除非您担心会话劫持;但那是另一个话题,有自己的预防方法。

2) 您可以将表单提交到与表单 HTML(或 page/function 需要 HTML 表单本身)相同的页面。您可以在开始时检查 $_POST 是否为空或已设置。如果是这样,您可以执行现场检查并插入数据库。如果遇到无效字段,则可以继续(或要求)表单 HTML。您仍然可以访问 $_POST,因此您可以再次填写表单字段。您的代码可以有

<input type="text" name="first_name" value="<?php if(isset($_POST['first_name'])) echo $_POST['first_name'];?>" />

我相信这是处理您的问题的正确方法,因为它比以这种方式使用 $_SESSION 的麻烦要好得多。我认为您实际上不需要 "store" 数据。