如何使用 php 构建服务器端脚本
how to structure server side script with php
我正在尝试启动在线服务。用户填写表单提交然后转到另一个页面。在第二页,他们选择一项服务。他们从该页面转到第 3 页。我想在 3 页中完成此操作,以鼓励用户完成序列(他们已经在第 2 页时投入了时间)。
如何才能更好地将数据从第 1 页发送到第 3 页?
到目前为止,我只是将数据从第 1 页发送到服务器端 php 脚本,然后将该数据发送到第 2 页,然后重复该过程直到第 3 页。是否有更合适的方法来完成此操作?
我的表单提交代码是
<?php
$varRedirect = "order.php";
if(isset($_POST["submit"]) )
{
$var1 = $_POST["element_1"];
$var2 = $_POST["element_1"];
$var3 = $_POST["element_1"];
$var4 = $_POST["element_1"];
$var5 = $_POST["element_1"];
$var6 = $_POST["element_1"];
$var7 = $_POST["element_1"];
$var8 = $_POST["element_1"];
$var9 = $_POST["element_1"];
}
/* begin switch logic */
redirect($varRedirect."?var1=".$var1."&var2=".$var2."&var3=".$var3."&var4=".$var4."&var5=".$var5."&var6=".$var6."&var7=".$var7."&var8=".$var8."&var9=".$var9);
/* functions */
function redirect($url, $statusCode = 303)
{
header('location: ' .$url, true, $statusCode);
die();
}
?>
推荐使用session。您可以在那里通过页面为用户存储数据。
http://php.net/manual/en/features.sessions.php
如果您更喜欢重定向,可以使用 http_build_query
来简化流程
$params = $_POST;
unset($params['submit']); // exclude 'submit' if you don't need it
$query = http_build_query($parms);
redirect($varRedirect."?$query);
没查好,不过可以看看思路。
哇!不要使用 get so send 表单,除非这是一个搜索表单!页面之间用POST发送数据!
现在你有几个解决方案:
- 简单易行的解决方案是使用JavaScript(例如一些jQuery插件)并创建一个包含3个表单的页面。然后通过 javascript 在页面上验证和显示表单,并将数据存储在 javascript 变量中。在最终表格上将其发送到数据库。
- 序列化您的表单数据,并将表单数据存储在用户会话中。通过这种方式,您将获得每个页面上的数据。在最后一个表单中,只需使用收集的数据并清除会话。
- 序列化表单数据并存储在 cookie 中。
- 当您想要完全控制和统计您的表单时,您可以在每次提交表单后将数据插入数据库。提交的第一个表单将 return 来自数据库的唯一 ID。然后,您可以使用 GET REDIRECT 并将
?some_id=332
附加到 url 并且每个下一个表单都使用 ?some_id=332
将保存数据提交到数据库。这样您就不需要在表单之间传递数据。你总是可以通过 ?some_id=332
从数据库中获取它。此外,用户可以通过这种方式进行刷新、next/prev 编辑。您只需要检查 url 中是否提供了 ?some_id=332
,如果是 - 从数据库加载数据以形成。
我正在尝试启动在线服务。用户填写表单提交然后转到另一个页面。在第二页,他们选择一项服务。他们从该页面转到第 3 页。我想在 3 页中完成此操作,以鼓励用户完成序列(他们已经在第 2 页时投入了时间)。
如何才能更好地将数据从第 1 页发送到第 3 页? 到目前为止,我只是将数据从第 1 页发送到服务器端 php 脚本,然后将该数据发送到第 2 页,然后重复该过程直到第 3 页。是否有更合适的方法来完成此操作?
我的表单提交代码是
<?php
$varRedirect = "order.php";
if(isset($_POST["submit"]) )
{
$var1 = $_POST["element_1"];
$var2 = $_POST["element_1"];
$var3 = $_POST["element_1"];
$var4 = $_POST["element_1"];
$var5 = $_POST["element_1"];
$var6 = $_POST["element_1"];
$var7 = $_POST["element_1"];
$var8 = $_POST["element_1"];
$var9 = $_POST["element_1"];
}
/* begin switch logic */
redirect($varRedirect."?var1=".$var1."&var2=".$var2."&var3=".$var3."&var4=".$var4."&var5=".$var5."&var6=".$var6."&var7=".$var7."&var8=".$var8."&var9=".$var9);
/* functions */
function redirect($url, $statusCode = 303)
{
header('location: ' .$url, true, $statusCode);
die();
}
?>
推荐使用session。您可以在那里通过页面为用户存储数据。 http://php.net/manual/en/features.sessions.php
如果您更喜欢重定向,可以使用 http_build_query
$params = $_POST;
unset($params['submit']); // exclude 'submit' if you don't need it
$query = http_build_query($parms);
redirect($varRedirect."?$query);
没查好,不过可以看看思路。
哇!不要使用 get so send 表单,除非这是一个搜索表单!页面之间用POST发送数据!
现在你有几个解决方案:
- 简单易行的解决方案是使用JavaScript(例如一些jQuery插件)并创建一个包含3个表单的页面。然后通过 javascript 在页面上验证和显示表单,并将数据存储在 javascript 变量中。在最终表格上将其发送到数据库。
- 序列化您的表单数据,并将表单数据存储在用户会话中。通过这种方式,您将获得每个页面上的数据。在最后一个表单中,只需使用收集的数据并清除会话。
- 序列化表单数据并存储在 cookie 中。
- 当您想要完全控制和统计您的表单时,您可以在每次提交表单后将数据插入数据库。提交的第一个表单将 return 来自数据库的唯一 ID。然后,您可以使用 GET REDIRECT 并将
?some_id=332
附加到 url 并且每个下一个表单都使用?some_id=332
将保存数据提交到数据库。这样您就不需要在表单之间传递数据。你总是可以通过?some_id=332
从数据库中获取它。此外,用户可以通过这种方式进行刷新、next/prev 编辑。您只需要检查 url 中是否提供了?some_id=332
,如果是 - 从数据库加载数据以形成。