我怎么知道我在php中发布的价值是多少?

时间:2012-03-22 12:46:57

标签: php html

在我的列表中有一些输入框的名称,它遵循1 2 3 ....的顺序,

<input type= "text" name="text1">
<input type= "text" name="text2">
<input type= "text" name="text3">

这意味着帖子名称=文本1文本2文本3

但是,由于数字不固定,我实际上并没有多少文本框,我在发布表单后如何获取所有名称

谢谢

4 个答案:

答案 0 :(得分:5)

使用text[]作为所有输入元素的名称,而不是text1text2等。然后,您可以将值设为$_POST['text'],这将是一个数组。此数组将包含与表单包含文本框一样多的值。

更新:如果您无法更改HTML(这很不幸),您可以通过以下方式获取已提交变量的名称:

$names = array_filter(array_keys($_POST),
                      function ($k) { return substr($k, 0, 4) == 'text'; });

答案 1 :(得分:2)

foreach($_POST as $name => $value) {
        echo "$name = $value";
}

应该给你一个想法

或者您可以使用数组文本[]:

<input type= "text" name="text[]">
<input type= "text" name="text[]">
<input type= "text" name="text[]">

答案 2 :(得分:1)

您可以包含一个隐藏字段,其值为所有此类字段的名称。

PUT THIS IN THE HTML FORM
<input type= "text" name="text1" value="1" />
<input type= "text" name="text2" value="2" />
<input type= "text" name="text3" value="3" />
<input type="hidden" name="textContainer" value="text1,text2,text3" />

然后,您可以在PHP中获取此变量:

<?php
    $textFields = trim( $_POST[ 'textContainer' ] );
    $textFields = explode( ',', $textFields );

    $fields = array(); // this array will contain all text fields with names text1, text2 as keys
    foreach( $textFields as $key => $value ) {
         $fields[ $value ] = $_POST[ $value ];
    }

    /* $fields is now an array like below:
    Array (
      'text1' => 1,
      'text2' => 2,
      'text3' => 3
    )*/
?>

让我知道这是否有效。

答案 3 :(得分:0)

您可以遍历$_POST数组本身

只需做一个foreach loop但是请记住,最好知道传递的是什么值,通过执行 catch all 这样的操作,你打开自己可能的注射和攻击。