在我提交表单之前,如何保留$ _SESSION

时间:2013-03-18 22:52:01

标签: php session

首先感谢您阅读本文, 我有一个表格,它有3页,需要从第1页和第2页存储数据,最后在第3页,然后它被发送到数据库。

我在第2页上使用此功能来存储第1页的信息 (假设在我的表单的第1页上有session_start();)

$_SESSION['firstName']= $_POST['firstName'];
$_SESSION['telephone']= $_POST['telephone']; 
$_SESSION['surname']= $_POST['surname'];
$_SESSION['mobile']= $_POST['mobile'];

然后,第3页使用此信息从第2页获取信息以保留信息。

 $_SESSION['address1']= $_POST['address1']; 
 $_SESSION['address2']= $_POST['address2'];
 $_SESSION['address3']= $_POST['address3'];
 $_SESSION['email']= $_POST['email'];
 $_SESSION['customerType']= $_POST['customerType'];

如果我在第3页上回显$ _SESSION ['email']它会显示出来但是如果我在最后一页上回显第2页的任何$ _SESSION它没有显示任何内容。

我花了很多时间看待存储会话,但我似乎无法解决这个问题。

夏天: -

  • 第1页启动会话(session_start()),用户输入他们的姓名,姓氏姓氏和手机。
  • 第2页存储用户在第1页上输入的信息,用户输入他们的地址,电子邮件并选择会员类型。
  • 第3页存储用户在第2页输入的信息,用户选择付款方式(不付款,因为我只想知道会员想要支付的费用,所以支票或PayPal)
  • 第3页也有一条信息没有存储为页面 将所有信息提交到数据库。

第3页上的问题如果我尝试从第1页ECHO获取任何信息,则不显示第1页的数据我收到此错误: - 注意:未定义的索引:

再次感谢您阅读本文,对不起,因为我是新人,所以这对许多人来说是个愚蠢的问题,但我想学习,这个网站很棒。

抱歉忘了添加这个,我有一个名为Default.php的主页,其中包含以下代码: -

 if ($_REQUEST['p']) { include('includes/'.$_REQUEST['p'].'.php'); 

然后从这个页面调用我的所有页面,格式如下

  default.php?p=addmember
  default.php?p=addmember-page2
  default.php?p=addmember-page3

default.php有session_start();所以每个页面都有这个名为

3 个答案:

答案 0 :(得分:5)

您需要在每个页面中使用session_start()初始化会话。

答案 1 :(得分:3)

也许这会有所帮助。

<?php
session_start();
?>
<?php
#session_destroy();
function form($type)
{
    return "<form action=\"\" method=\"POST\" >
            <input type=\"text\" name=\"next\" />
            <input type=\"submit\" name=\"$type\" />
            </form> ";
}

function module()
{
    echo form('one');
    if (isset($_POST['one'])) {
        if (isset($_POST['next']) && !empty($_POST['next'])) {
            $_SESSION['title'] = $_POST['next'];
        } else {
            echo "post is empty";
        }
    } else {
        echo "Please fill the field";
    }
}

function module2()
{
    echo form('two');
    if (isset($_POST['two'])) {
        if (isset($_POST['next']) && !empty($_POST['next'])) {
            $_SESSION['content'] = $_POST['next'];
        } else {
            echo "post is empty";
        }
    } else {
        echo "Please fill the field";
    }
}

function module3()
{
    echo form('three');
    if (isset($_POST['three'])) {
        if (isset($_POST['next']) && !empty($_POST['next'])) {
            $_SESSION['category'] = $_POST['next'];
        } else {
            echo "post is empty";
        }
    } else {
        echo "Please fill the field";
    }
}
if (!isset($_SESSION['title'])) {
    echo module();
} else if (isset($_SESSION['title']) && !isset($_SESSION['content'])) {
    echo module2();
} else if (isset($_SESSION['content']) && !isset($_SESSION['category'])) {
    echo module3();
}

// you can delete, below this line. 
echo "<div style=\"width:1000px; align:left; border:1px dashed #darkblue; color: darkblue; font-size:14px;  \" />";
function SessionChecker($type)
{
    if (isset($_SESSION[$type]) && !empty($_SESSION[$type])) {
        echo "Session $type is set as <b>" . $_SESSION[$type] . "</b><br/>";
    } else {
        echo "Session '$type' is not set <br/>";
    }
}

echo SessionChecker('title');
echo SessionChecker('content');
echo SessionChecker('category');
echo "</div>";

答案 2 :(得分:2)

您是否在每个页面都调用了session_start()

session_start()会创建一个会话或恢复当前会话,因此您需要在每个页面的顶部调用它,而不仅仅是您的初始页面。