Передача массива с одной страницы на другую

У меня есть массив, содержащий некоторые значения, например

arr['one'] = "one value here"; arr['two'] = "second value here"; arr['three'] = "third value here"; 

Я эти значения находятся на странице home.php, а в конце страницы перенаправляется на страницу detail.php. Теперь я хочу передать этот массив со страницы home.php на detail.php, когда это происходит прямо.

Сколько способов я могу отправить это значение, используя метод post и get. Также, если возможно, покажите мне, как получать и печатать эти значения на странице detail.php.

Пример каждого типа очень ценится.

Самый простой способ сделать это – использовать сеанс для хранения массива с одной страницы на другую:

 session_start(); $_SESSION['array_to_save'] = $arr; 

Дополнительная информация о сеансах: http://php.net/manual/en/function.session-start.php

Если вы не хотите использовать сеанс, вы можете сделать что-то подобное на первой странице

 $serialized =htmlspecialchars(serialize($arr)); echo "<input type=\"hidden\" name=\"ArrayData\" value=\"$serialized\"/>"; 

а в другом вы извлекаете данные массива следующим образом:

 $value = unserialize($_POST['ArrayData']); 

Решение найдено здесь: https://stackoverflow.com/a/3638962/1606729

Если вы не хотите использовать сеансы, вы можете просто включить страницу в другой файл.

file1.php

 <php $arr = array(); $arr['one'] = "one value here"; $arr['two'] = "second value here"; $arr['three'] = "third value here"; ?> 

file2.php

 <?php include "file1.php"; print_r($arr); ?> 

Если массив динамически создан и вы хотите передать его через GET или POST, вы должны сформировать URL-адрес на стороне сервера и перенаправить пользователя на страницу URL-адреса HTTP вместо файла php.

Итак, что-то вроде:

file1.php

 <php $arr = array(); $arr['one'] = "one value here"; $arr['two'] = "second value here"; $arr['three'] = "third value here"; $redirect = "http://yoursite.com/file2.php?".http_build_query($arr); header( "Location: $redirect" ); ?> 

file2.php

 <?php $params = $_GET; print_r($params['one']); print_r($params['two']); print_r($params['three']); ?> 

Файл home.php

 session_start(); if(!empty($arr)){ $_SESSION['value'] = $arr; redirect_to("../detail.php"); } 

detail.php

  session_start(); if(isset($_SESSION['value'])){ foreach ($_SESSION['value'] as $arr) { echo $arr . "<br />"; unset($_SESSION['value']); } с  session_start(); if(isset($_SESSION['value'])){ foreach ($_SESSION['value'] as $arr) { echo $arr . "<br />"; unset($_SESSION['value']); } 

Вы также можете передавать значения по параметрам запроса.

 header('Location: detail.php?' . http_build_query($arr, null, '&')); 

И вы можете получить массив в detail.php следующим образом:

 // your values are in the $_GET array echo $_GET['one']; // echoes "one value here" by your example 

Имейте в виду, что если вы передадите значения с помощью GET или POST (скрытое поле ввода), они могут быть легко изменены пользователем.