【问题标题】:How do I keep my $_SESSION until I submit my form在提交表单之前如何保留我的 $_SESSION
【发布时间】:2013-03-18 22:52:00
【问题描述】:

首先感谢您阅读本文, 我有一个表单,它有 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()),用户输入他们的姓名、姓氏和手机号码。
  • PAGE 2 存储用户在第 1 页输入的信息,用户输入他们的地址、电子邮件并选择会员类型。
  • PAGE 3 存储用户在第2页输入的信息,用户选择支付方式(不支付,我只是想知道会员想怎么支付,所以check or paypal)
  • PAGE 3 也有一条信息不作为页面存储 将所有信息提交到数据库。

第 3 页的问题如果我尝试回显第 1 页的任何信息,则不会显示第 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个页面都有用户输入的信息,然后在用户在第3页输入最后一条信息后,它们都必须在第3页提交。
  • 给我 2 分钟,我来弥补。
  • 天哪,真的吗?非常感谢!
  • 是的,我需要更多时间,我只会创建一个脚本,您可以在其中使用会话一个一个地在一个页面中发布所有内容

标签: php session


【解决方案1】:

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

【讨论】:

  • 是的,session_start() 用于启动新会话或恢复已启动的会话。 php.net/manual/en/function.session-start.php
  • 如果我使用 session_start 我得到以下 注意:会话已经开始 - 忽略 session_start()
【解决方案2】:

也许这会有所帮助。

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 好的,抱歉,我也会将此添加到主要问题中。我使用一个名为 default.php 的页面,然后我使用这个 if ($_REQUEST['p']) { include('includes/'.$_REQUEST['p'].'.php'); 所以我使用 default.php?p=customeradd 并且它在每个页面都默认运行。 Default.php 有 session_start();
    猜你喜欢
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多