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

同じ名前の多数の入力要素を作成する必要があり、それぞれがその値として 1 つの配列項目を持ちます。

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

留意すべき重要な点:

  1. $item常にスカラー値 (文字列、整数など) でなければなりません。この手法では、断片的に配列を渡すことはできません。
  2. 変数を HTML 出力に挿入しているので、それらを適切にエスケープおよび/またはサニタイズする必要があることを決して忘れないでください。この場合、これは で行われhtmlspecialcharsます。これは、一般的に正しく動作するために出力エンコーディングを認識している必要があります (3 番目のパラメーターを調べます)。

シリアル化によって配列を少しずつ渡すために使用できる代替アプローチもあります。

<input type="hidden" name="html" 
       value="<?= htmlspecialchars(serialize($array)); ?>" />

そして、受信側でシリアル化を解除します。

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

実際には、セッション変数はリクエスト間で複雑な状態を渡すためのはるかに優れた方法であるため、完全を期すためにこのオプションを含めています。

于 2013-08-27T22:05:40.263 に答える