2014-09-21 56 views
0

好的。所以我使用Sessions来存储数据,因为我正在制作一个多页面表单。事情是,我需要一个后退按钮。我有一个提交按钮,将用户带到下一页并将数据存储到会话中,但我需要在提交按钮旁边有一个后退按钮,以防因任何原因造成混乱。无论如何要用PHP制作一个后退按钮,在显示他们输入的数据的同时将他们带回上一页。继承我的一页的代码。 另外,我已经尝试使用history.go,但只适用于一个页面。PHP会话返回按钮?

<?php 

//let's start the session 
session_start(); 

//now, let's register our session variables 
$_SESSION['opinion1'] = 'opinion1'; 
$_SESSION['choice1'] = 'choice1'; 

//finally, let's store our posted values in the session variables 
$_SESSION['opinion1'] = $_POST['opinion1']; 
$_SESSION['choice1'] = $_POST['choice1']; 

?> 

<!DOCTYPE html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<link href='http://fonts.googleapis.com/css?family=Playball' rel='stylesheet' type='text/css'> 
<link rel="stylesheet" href="bootstrap.css"> 
<link rel="stylesheet" href="main.css"> 
<link rel="stylesheet" type="text/css" href="engine1/style.css" /> 
<script type="text/javascript" src="engine1/jquery.js"></script> 
<script src="jquery.cycle2.js"></script> 
<title>Untitled Document</title> 
</head> 

<body> 

<div class="nav"> 
    <div class="container"> 
     <h1 class="pull-left">Securing the Future of Village Walk</h1> 
     <div class="pull-right"> 
     <ul class="nav nav-pills"> 
      <li class="active"><a href="#">home</a></li> 
      <li><a href="#">about</a></li> 
      <li><a href="#">contact</a></li> 
     </ul> 
     </div> 
    </div> 
</div> 

<div class="ammendment"> 
    <div class="container"> 
     <form method="post" action="page4_form.php"> 
      <textarea id="opinion2" name="opinion2" value=""></textarea> 
      <label for="Yes">Yes</label> 
      <input type="radio" name="choice2" value="Yes"> 
      <label for="No">No</label> 
      <input type="radio" name="choice2" value="No"> 
      <label for="Neither">Neither</label> 
      <input type="radio" name="choice2" value="Neither"> 
      **I NEED BACK BUTTON HERE** 
      <input type="submit" value="Next"> 
     </form> 
    </div> 
</div> 


</body> 
</html> 
+0

只需检查输入是否保存了有效的会话值。如果是这样,请相应地更新表单字段。 – 2014-09-21 18:59:25

+0

但我怎么做一个后退按钮,而不必每次都重新提交表单? – user1585549 2014-09-21 19:09:29

+0

任何与CSS有关的事情?我不这么认为。 – 2014-09-21 19:18:43

回答

0

你可以只添加一个额外的形式,像这样:

<form action="pageX.php" method="post> <input name="submitBackButton" type="submit" value="Back"> </form>

这可以PHP中被检测为正常的GET/POST领域:

<?php 
if (isset($_POST['submitBackButton'])) 
{ 
    // Do required actions here 
} 
+0

但是你能为我做出必要的行动吗?我不擅长PHP。 – user1585549 2014-09-21 19:11:26

+0

也是这样工作,而不需要用户每次都重新提交表单? – user1585549 2014-09-21 19:12:10

+0

你想要采取什么行动? 而上面的代码需要一个表单提交/页面请求。如果你想在没有表单重新提交的情况下'动态'处理它,那么你将不得不考虑客户端脚本 - javascript。 – 2014-09-21 19:16:41

1

我先以便于您将输入的数据与输入的页面进行关联的方式组织会话数据。

一种可能是安排在一个阵列会话数据:

$_SESSION['formData'] = array(
    array(... data for step 1), 
    array(... data for step 2), 
    array(... data for step 3), 
); 

所以$formData[0]将举行在步骤1中输入数据等

为按钮,另一提交就足够了:

<input type="submit" value="Back" /> 

然后,你将不得不确定你要回到哪个页面;您可以通过发送带有当前页码的隐藏字段来实现。

<form method="post" action="page_form.php"> 
    <input type="hidden" name="page" value="X" /> 

这里需要注意的一件事是,服务器端进程不会再是每页一个;相反,只有一个page_form.php,您必须确定操作和要移至的页面(尽管您可以每页使用一个并在其中设置正确的操作,但对于任何问题总是有几种解决方案):

<?php 
... 

$page = $_POST['page']; 
if (isset($_POST['Back'])) // Going back 
{ 
    $page -= 1; // Previous page requested 

    // Retrieve data from session 
    $data = $_SESSION['formData'][$page-1]; // $page-1 because of zero based array indexes. 

    ... 

    // Dynamically load the proper page processor. 
    // each pageX_form.php will know how to deal with the variable $data. 
    include "page{$page}_form.php" 
} 
else 
{ 
    $page += 1; // Next page requested 
    $data = $_POST; // In this case, the data is whatever was entered 
} 

当构建每个页面的形式,你必须记住要与页码添加隐藏字段:

<form method="post" action="page_form.php"> 
    <input type="hidden" name="page" value="<?php echo $page; ?>" /> 

如果你想使用一个服务器端的过程中每页,那么你可以这样做,而不是:

<form method="post" action="page<?php echo $page; ?>_form.php"> 

服务器端进程看起来不一样,因为您不必询问页码;这将是隐含的。

+0

哦,好的。我想我明白了。所以技术上只有1页,但窗体的其他部分是隐藏的?然后,当他们点击下一个时,它会将他们带到下一个隐藏页面,反之亦然。那是对的吗?此外,你认为你可以帮我一个忙,并可能采取我的代码和实施你的,我不太好用PHP – user1585549 2014-09-21 19:36:33

+0

不一定隐藏。 对于两个步骤的输入过程。你会有一个单独的form_process.php开始会话,确定Back按钮是否被按下,以及如答案中所示设置变量。 然后你会有其他两个文件:form_part-1.php和form_part-2.php,你可以根据需要添加**。 至于你的要求:这实际上是我如何谋生。我很乐意帮助你,但我甚至不确定这种讨论是否允许在这里。 – 2014-09-21 19:51:10