1

这可能是一个愚蠢的问题,但我在这里迷路了。我需要使用 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];
    }
?>

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

4

2 回答 2

4

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

<?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)); ?>" />

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

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

为了完整性,我主要包括这个选项,因为实际上会话变量是在请求之间传递复杂状态的更好方法。

于 2013-08-27T22:05:40.263 回答
1

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

于 2013-08-27T22:10:05.837 回答