在 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的内容
您可以 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>';
}
?>
我知道会话可能是最有效的方法,而且我已经找到了很多关于如何使用这些方法的答案,但是为了这个项目,我不允许这样做所以。我目前正在做的是使用 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的内容
您可以 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>';
}
?>