php表单传递数组作为参数

时间:2013-10-13 21:53:38

标签: php html

我在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'];

什么都不显示;

3 个答案:

答案 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>