0

我有一个需要重定向到另一个的 php 文件,但我需要将一个数组传递给第二个文件。我怎样才能做到这一点。

我知道这是错误的,但我需要一些逻辑上与此类似的东西。

<?php 
       $arr = array('this'=>'is', 'some'=>'stuff');
       header("someurl.php", vals=>$arr);
 ?>
4

4 回答 4

7

使用http_build_query

header("Location: someurl.php?" . http_build_query($arr));
于 2012-04-21T16:14:04.733 回答
6

这不是你做标题的方式。它必须是

header("Location: someurl.php?vals=$arr");

但是,这只会生成 URL

someurl.php?vals=Array

请注意,重定向本质上不能进行 POST。它将导致一个新的 GET 请求,这意味着您必须在 URL 中传递数据。如果您有一个非常大的网址,您几乎肯定会丢失其中的大部分内容,因为网址有长度限制。

但是,如果它很短,您可以尝试以下操作:

$url = 'someurl.php?vals=' . url_encode(serialize($arr));
header("Location: $url");

并希望它有效。

于 2012-04-21T16:14:11.727 回答
5

如果你不想暴露你的 $array,你必须使用 PHP 内置会话支持。

session_start(); // DO CALL ON TOP OF BOTH PAGES
$_SESSION['array'] = $array;
echo $_SESSION['array']; // GIVES SAME $array FOR BOTH PAGES
于 2012-04-21T16:17:36.990 回答
3

您可以将数组存储在会话或请求中,然后检索它。

如果是不同的请求,您必须在会话中进行。

$_SESSION['myarray'] = $array_you_want_to_store;

接着。

$array_you_want_to_retrieve = $_SESSION['myaarray'];
于 2012-04-21T16:15:13.357 回答