PHP将数组发送到另一个PHP文件

时间:2013-08-27 22:03:15

标签: php

这可能是一个愚蠢的问题,但我在这里迷路了。我需要使用POST变量将包含一些数据的数组发送到另一个PHP文件。这是我的表格:

<form action="test.php" method="post">
        <label name="html[]" hidden><?php echo $array; ?></label>
        <input type="submit" value="submit">
</form>

这是test.php

<?php
    $html = $_POST['html'];
    for($i = 1; $i<=9; $i++){
        echo $html[$i];
    }
?>

所以这就是我尝试过的,但它没有显示任何东西。请帮忙

2 个答案:

答案 0 :(得分:3)

您需要创建一些具有相同名称的输入元素,每个输入元素都有一个数组项作为其值:

<?php foreach ($array as $item) : ?>
<input type="hidden" name="html[]" value="<?= htmlspecialchars($item); ?>" />
<?php endforeach; ?>

要记住的重点:

  1. $item必须始终是标量值(字符串,整数等)。你不能用这种技术零碎传递数组。
  2. 永远不要忘记,因为您要将变量注入HTML输出,所以必须逃避和/或正确清理它们。在这种情况下,这是通过htmlspecialchars完成的,<input type="hidden" name="html" value="<?= htmlspecialchars(serialize($array)); ?>" /> 必须知道您的输出编码才能正常工作(查找其第三个参数)。
  3. 还有一种替代方法可用于通过序列化逐步传递数组:

    $html = unserialize($_POST['html']);
    

    然后你会在接收端反序列化它:

    {{1}}

    我主要将此选项包含在完整性中,因为在实践中,会话变量是在请求之间传递复杂状态的更好方法。

答案 1 :(得分:1)

是否有必要将数组的数据放在隐藏字段中?您可以将数组存储在$ _SESSION中并访问它。顺便说一下,我认为你有问题,可以提交标签,在这种情况下你必须将数据放入type =“hidden”的输入字段。