这不是一个简单的"发布后#34;情况,因为,页面被重定向回到这里。
我有一个大的形式,大约有20个或更多的输入字段。
因此,用户填写表单并提交,并在服务器端验证后(如果有错误),用户将被重定向回与表单相同的页面。但没有价值观。所以,他每次只是因为一个错误的输入而必须填满整个事情。
那么,如何克服这个问题...
我见过有人建议使用$ _SESSION来保存这些数据。安全吗?我有超过20个输入和那种大量的数据..
答案 0 :(得分:1)
如果您没有使用某个PHP框架,有几种方法可以做到这一点。
1)是的,如果您在提交后遇到某个无效字段,则可以使用$ _SESSION存储信息。请记住使用session_start()
来启动/访问会话。这是一种安全的方法,除非你担心会话劫持;但这是一个不同的主题,有自己的预防方法。
2)您可以将表单提交到与表单HTML(或需要HTML表单本身的页面/功能)相同的页面。如果$_POST
不为空或已设置,您可以在开头检查。如果是这样,您可以执行字段检查并插入数据库。如果遇到无效字段,则可以继续(或要求)表单HTML。您仍然可以访问$ _POST,因此您可以再次填写表单字段。您的代码可以
<input type="text" name="first_name" value="<?php if(isset($_POST['first_name'])) echo $_POST['first_name'];?>" />
我认为这是处理问题的正确方法,因为这是一种非常优化的方式,而不是以这种方式使用$ _SESSION的麻烦。我认为您不需要为您的案例“存储”数据。