-2

我有 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'];
?>
4

3 回答 3

1

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

例子

发件人.php

<?php

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

接收器.php

<?php

if (isset($_GET['data'])) {
    $data = json_decode(urldecode($_GET['data']), TRUE);
    // do whatever you want with your array
}
于 2015-12-16T03:11:07.160 回答
0

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

于 2013-07-12T18:12:41.313 回答
0

您可以序列化一个数组。这会将其转换为字符串,可以通过任何正常方式在 HTTP 请求中传递。即在 URL 中编码或作为隐藏的 post 变量:

<?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);
于 2015-12-16T02:55:22.340 回答