我在php格式的参数中传递一个数组,但它不起作用,请帮忙。
在step1.php中:
$groupinfo['groupname'] = "test";
<form name="GroupAdd" method="post" action="Step2.php5?groupinfo=<?php echo serialize($groupinfo); ?>">
IN step2.php:
$groupinfo = unserialize($_GET['groupinfo']);
和
echo $groupinfo['groupname'];
什么都不显示;
答案 0 :(得分:0)
您可以尝试http-build-query(在第一步中)
$groupinfo = array('groupID' => 1, 'groupname' => 'test');
$qStr = http_build_query($groupinfo); // groupID=1&groupname=test
像这样构建表单操作
<form name="GroupAdd" method="post" action="Step2.php?<?php echo $qStr ?>">
第二步(从网址获取)
echo $_GET['groupname'];
您也可以使用
$urlParts = parse_url($_SERVER['REQUEST_URI']);
parse_str($urlParts['query'], $output);
print_r($output);
答案 1 :(得分:0)
<form name="GroupAdd" method="post" action="Step2.php5">
<input type=hidden name=groupinfo value="<?php
echo addslashes(serialize($groupinfo));
?>">
<input type=submit>
然后在第2步
$groupinfo=unserialize($_POST['groupinfo']);
替代地
<form name="GroupAdd" method="post" action="Step2.php5">
<?php
foreach($groupinfo as $key=>$value)
{
echo "<input type=hidden name='$key' value='$value'>\n";
}
?>
<input type=submit>
与自2003年的构建查询
以来的恢复结果相同答案 2 :(得分:0)
是Step2.php
还是Step2.php5
?看起来您的表单似乎没有调用正确的脚本。此外,serialize()
的结果应使用rawurlencode()
正确转义,以包含在网址中。
但是让客户机会让你的脚本在他输入的内容中运行unserialize()
可能是一个严重的安全漏洞。不要那样做。
执行此操作的正确方法是使用http_build_query()
将数组转换为HTTP查询字符串,或使用标记<input type=hidden>
在POST正文中转发这些值。
<form name="GroupAdd" method="post" action="Step2.php5">
<?php
foreach ($groupinfo as $k => $v)
printf('<input type="hidden" name="%s" value="%s">', rawurlencode($k), rawurlencode($v));
?>
...
</form>