将表单数据作为会话变量存储在多个页面上

时间:2018-08-25 10:08:22

标签: php session session-variables

我只是想知道是否可以将表单数据存储为多页会话?

我的网站上有5个页面,每个页面都有一个带有输入字段的表单。 我想在所有5页上保存所有会话和输入值,并在最后一页上echo

我已经将session_start();保存在一个文件中,并将其包含在每个页面中:

session_start.php

<?php
   session_start();
?> 

<!DOCTYPE html>之前的页面顶部,我在每个页面上都这样添加它:

第1页:

<?php

    include("config.php");
    require_once("session_start.php");

if (isset($_POST['submit'])) { 
 $_SESSION['email'] = $_POST['email'];

 } 

?>

然后在体内

<form action="" method"post">
<input type="text" name="email"/>
<input type="submit" name="submit" value="Enter" />
</form>

第2页:

<?php

        include("config.php");
        require_once("session_start.php");

    if (isset($_POST['submit'])) { 
     $_SESSION['passwort'] = $_POST['passwort'];

     } 

    ?>

then in the Body again:

    <form action="" method"post">
    <input type="text" name="passwort"/>
    <input type="submit" name="submit" value="Enter" />
    </form>

我可以在第2页上回显email Session,而不会出现以下问题:

<?php
echo $_POST["email"];
 ?>

但是如果我以与第1页相同的方式在页面Undefined index: passwort上出现错误。

然后继续浏览其他3页,我的方式有什么问题? 使用此处的代码,我只能从前面的页面中保存会话,并echo将其保存到下一页。

感谢您的光临!

1 个答案:

答案 0 :(得分:1)

只要在每次新页面加载开始时成功调用session_start();,就将向前存储先前存储的会话数据。

是的,您每次都需要将表单提交数据从$_POST传输到$_SESSION数组。

在第1页的此代码段之后

if (isset($_POST['email'])) { 
    $_SESSION['email'] = $_POST['email'];
}

您的会话将包含:

$_SESSION = ["email" => "example@email.com"];

然后在第2页的此代码段之后

if (isset($_POST['passwort'])) { 
    $_SESSION['passwort'] = $_POST['passwort'];
}

您的会话将包含:

$_SESSION = [
    "email" => "example@email.com",
    "passwort" => "p@$$w()rt"
];

依次类推,以供后续页面使用。

要检查数组中的内容时,只需调用var_export($_SESSION)

要访问特定元素时,请使用其键。

例如echo $_SESSION['passwort'];