У меня есть массив, содержащий некоторые значения, например
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 (скрытое поле ввода), они могут быть легко изменены пользователем.