如何跨多个表单访问$_POST数据


How to Access $_POST Data Across Multiple Forms

对于我正在为类开发的购物车应用程序,我必须显示每一步的信息。我的问题是,我只能显示上一步中的信息。对于步骤1,从单选框中选择一个项目。然后像这样存储:

        function processStep1() {
            //Implemented sessions
            $_SESSION["items"] = $_POST["items"];
            displayStep2();
        }

步骤2要求一个数量,然后验证它,就像这样:

        function processStep2() {
            //Implemented sessions
            $_SESSION["quantity"] = $_POST["quantity"];
            if ( preg_match('/^'d+$/',$_POST["quantity"]) ) {
            displayStep3();
            } else {
            echo "ERROR: Quantity entered was invalid. Please try again.";
            displayStep1();
          }
        }

(顺便说一句,当输入不是整数时,我似乎无法将其用于刷新当前步骤(显示步骤2),因为每次尝试都会出错。如果有人能回答为什么会这样,那将非常有用。)

但在表单的第3步,我尝试运行以下行:

            <p>You have selected <?php echo $_POST["quantity"] ?> units of the <?php echo $_POST["items"] ?>.<p>

它每次都会返回一个错误。我已经尝试了相同输出的各种配置,并确定它将始终解析$_POST["quantity"],但从不解析$_POST["items"]。我需要它来做这两件事。

您的第三个表单没有"看到"$_POST['items'],因为它没有提交到该表单。您将其存储在会话中。在您的第三个表单上开始一个新的会话,并请求$_session['items']。

步骤1

<form name="step1" method="post" action="whateverPageContaintsProcessStep1.php">
    <input type="radio" name="items" value="item1">Item 1
    <input type="radio" name="items" value="item2">Item 2
</form>

当我们提交表单时,将要发送的$_POST数据将是我们选择的单选按钮的值。

步骤2

<form name="step2" method="post" action="whateverPageContaintsProcessStep2.php">
    <input type="number" name="quantity" value="0" />
</form>

当我们提交表单2时,$_POST数据将包含名为quantity的文本框的值,但由于此表单不包含以前的单选按钮,该值将不会发送到服务器,因此我们将无法在"whateverPageContaintsProcessStep2.php"中访问它。