PHP会话后退按钮?

时间:2014-09-21 18:58:09

标签: php html

确定。所以我使用Sessions来存储数据,因为我正在创建一个多页面表单。问题是,我需要一个后退按钮。我有一个提交按钮,将用户带到下一页并将数据存储到会话中但我需要一个提交按钮旁边的后退按钮,以防他们因任何原因搞砸了。反正有没有用php创建一个后退按钮,将它们带回到上一页,同时显示他们输入的数据?继承我的一页代码。 此外,我尝试过使用history.go,但这只适用于一页。

<?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>

2 个答案:

答案 0 :(得分: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">

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

答案 1 :(得分: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
}