Передавать данные со страницы 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?

Author: Adrian Cid Almaguer, 2015-04-12

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>';
}   

?>
 1
Author: Adrian Cid Almaguer, 2015-04-12 05:47:03

Вы можете сохранить их в скрытом массиве как JSON json_encode(), а затем восстановить их с помощью json_decode()

Сохраните $_GET на странице 1:

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

Извлеките $_GET на странице 2:

<?php $old_get = json_decode($POST['get'])?>
 2
Author: CMPS, 2015-04-12 04:48:04

В вашем массиве измените значение $_POST на $_REQUEST. Таким образом, вы получите количество как для публикации, так и для получения

$_REQUEST - это ассоциативный массив, который по умолчанию содержит содержимое $_GET, $_POST и $_COOKIE

Вот документация по нему

 2
Author: James Grundner, 2015-04-12 04:52:05