我有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'];
?>
答案 0 :(得分:1)
如果它只是数组并且您没有$_SESSION
选项,则可以json_encode
数组,然后urlencode
并传递,然后在下一个解码页。
<?php
$data = array('a' => 'b');
$param = urlencode(json_encode($data));
header("Location: receiver.php?data={$param}");
<?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);