Передавать данные со страницы 1-2-3-4... на PHP (без сеансов/файлов cookie)
Я знаю, что сеансы, вероятно, являются наиболее эффективным способом сделать это, и я нашел ряд ответов о том, как это сделать с ними, однако ради этого проекта мне не разрешено это делать. В настоящее время я использую 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
пусто. Могу ли я получить некоторую информацию о том, как передать информацию о массиве со страницы 1 на последнюю страницу без использования сеансов или файлов cookie?
3 answers
Вы можете serialize()
использовать свои данные, как в этом примере. На странице 1.php
у вас есть массив, который отправляется через header(Location:...)
на страницу 2.php
. В 2.php
вы можете увидеть полученный массив и отправить информацию в 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>';
}
?>
Вы можете сохранить их в скрытом массиве как JSON json_encode()
, а затем восстановить их с помощью json_decode()
Сохраните $_GET на странице 1:
<input name="oldget" value="<?= json_encode($_GET)?>">
Извлеките $_GET на странице 2:
<?php $old_get = json_decode($POST['get'])?>
В вашем массиве измените значение $_POST на $_REQUEST. Таким образом, вы получите количество как для публикации, так и для получения
$_REQUEST - это ассоциативный массив, который по умолчанию содержит содержимое $_GET, $_POST и $_COOKIE