有没有什么办法可以在不使用会话的情况下将数组从一个页面传递到另一个页面?

时间:2013-07-12 18:09:31

标签: php arrays

我有4个下拉形式。我首先将值放入名为$gdc的数组中。我想将该数组发送到另一个页面(比如nextpage.php)。但是,我不想使用会话。还有其他方法可以做到这一点吗?

这是我的代码:

<form name="f1" method="post">
<?php
include("dbconnect.php");
for($b=0;$b<4;$b++)
{
$w=mysql_query("select * from gdc");
$x=mysql_num_rows($w);
if($x>0)
{
echo "<td><select name='gdc".$b."'>";
while($y=mysql_fetch_array($w))
{
echo "<option>".$y['GDC_CD']."</option>";
}
}
echo "</select>";
?>
<p><input type="submit" name="btn" value="OK"/></p>
<?php
if(isset($_POST['btn']))
{
for($b=0;$b<4;$b++)
{
$gdc[$b]=$_REQUEST['gdc'.$b];
}
}

我找到了一些可行的代码。 (见下文)但是,我无法在我的表单中实现它,因为我的数组偏移量与此示例中的偏移量不同:

1页:

<?php
 $arr = array();
    $arr[1] = "one value here";
    $arr[2] = "second value here";
    $arr[3] = "third value here";
header('Location:page2.php?' . http_build_query($arr, null, '&'));
?>

第2页:

<?php
echo $_GET['one'];
?>

3 个答案:

答案 0 :(得分:1)

如果它只是数组并且您没有$_SESSION选项,则可以json_encode数组,然后urlencode并传递,然后在下一个解码页。

实施例

sender.php

<?php

$data = array('a' => 'b');
$param = urlencode(json_encode($data));
header("Location: receiver.php?data={$param}");

receiver.php

<?php

if (isset($_GET['data'])) {
    $data = json_decode(urldecode($_GET['data']), TRUE);
    // do whatever you want with your array
}

答案 1 :(得分:0)

$_SESSION变量是保持用户特定数据的最佳方式。添加网址参数(例如,http://www.example.com/default.php?foo=bar,其中$_GET['foo'] = bar)是一种风险,因为它们可以由用户编辑或完全丢失。

答案 2 :(得分:0)

你可以serialize一个数组。这将它变成一个字符串,可以通过HTTP请求中的任何常规方式传递。即在URL中编码或作为隐藏的帖子变量:

<?php
$serializedVersion = serialize ($myArray);
echo ("<input type = 'hidden' name = 'html-version-of-array' value = '$serializdVersion' />");

然后有php其他文件:

<?php
$serializdVersion = $_POST['html-version-of-array'];
$myArray = unserialize($serializdVersion);