在 PHP 中传递第 1-2-3-4 页的数据...(没有 sessions/cookies)

Pass data from page 1-2-3-4... in PHP (without sessions/cookies)

我知道会话可能是最有效的方法,而且我已经找到了很多关于如何使用这些方法的答案,但是为了这个项目,我不允许这样做所以。我目前正在做的是使用 http_build_query 使用以下代码将信息从 $_POST 和一个单独的数组传递到下一页。

    if ($login[$user] == $pass) {
                            $qstr = http_build_query(
            array(
                'products_array' => $products,
                'quantity' => $_POST['quantity']
            )
    );
      header('Location: display_invoice.php?' . $qstr);

这有效,我可以在重定向后访问 $_GET array 中的数组,但是如果我尝试使用相同的代码再次将信息传递到下一页,$_GET array是空的。我能否就如何在不使用会话或 cookie 的情况下将数组信息从第 1 页传递到最后一页获得一些意见?

您可以将它们作为 JSON json_encode() 存储在隐藏数组中,然后使用 json_decode()

恢复它们

在第 1 页存储 $_GET:

<input name="oldget" value="<?= json_encode($_GET)?>">

在第 2 页获取 $_GET:

<?php $old_get = json_decode($POST['get'])?>

在您的数组中将 $_POST 更改为 $_REQUEST。这样您将获得 post 和 get

的数量

$_REQUEST是一个关联数组,默认包含$_GET、$_POST和$_COOKIE的内容

Here is the documentation on it

您可以 serialize() 您的数据,就像这个例子一样。在页面 1.php 中,您有一个数组通过 header(Location:...) 发送到页面 2.php。在 2.php 中,您可以看到接收到的数组,并通过 link 将信息发送到 3.php。在 3.php 中,您可以看到来自 1.php

的数组

尝试示例

1.php

<?php

    $bond = array (
    'Sean Connery' => 'Dr. No',
    'George Lazenby' => 'On Her Majesty\'s Secret Service',
    'Roger Moore' => 'Live and Let Die',
    'Timothy Dalton' => 'The Living Daylights',
    'Pierce Brosnan' => 'GoldenEye',
    'Daniel Craig' => 'Casino Royal'
    );

$info = serialize($bond);

header('Location: 2.php?values=' . $info);

?>

2.php

<h1>Page 2</h1>
<?php

$values = $_GET['values'];
$info = unserialize($values);

foreach($info as $key => $value) {
  echo $key . ' - ' . $value . '<br>';
}   

?>

<p>
<a href="<?php echo '3.php?values=' . urlencode(serialize($info)); ?>">Send values to 3.php</a>
</p>

3.php

<h1>Page 3</h1>
<?php

$values = $_GET['values'];
$info = unserialize($values);

foreach($info as $key => $value) {
  echo $key . ' - ' . $value . '<br>';
}   

?>