Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何知道我在php中发布的值是多少?_Php_Html - Fatal编程技术网

我如何知道我在php中发布的值是多少?

我如何知道我在php中发布的值是多少?,php,html,Php,Html,在我的列表中有一些输入框的名称,它的顺序是1 2 3 <input type= "text" name="text1"> <input type= "text" name="text2"> <input type= "text" name="text3"> 这意味着帖子名=文本1文本2文本3 但是,由于数字不是固定的,我不知道实际有多少文本框,在我发布表单后,如何获取所有的名称 谢谢您只需在$\u POST数组本身中进行迭代即可 只需对每个循环执行一次f

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

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

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

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


谢谢

您只需在
$\u POST
数组本身中进行迭代即可


只需对每个循环执行一次
foreach循环
,但是,请记住,最好知道传递的值是什么,通过这样一个全面的操作,您可以打开自己的大门,接受可能的注入和攻击。

使用
text[]
作为所有输入元素的名称,而不是
text1
text2
等。然后可以将值作为
$\u POST['text']
获取,这将是一个数组。此数组将包含与表单包含的文本框相同的值

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

$names = array_filter(array_keys($_POST),
                      function ($k) { return substr($k, 0, 4) == 'text'; });
我应该给你这个主意

也可以使用数组文本[]:

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

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

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" />
将其放入HTML表单中
然后,您可以在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
    )*/
?>


让我知道这是否有效。

还有其他方法吗?由于某种原因,我无法将名称更改为数组。对不起,我如何调用此函数?@LeoChan:我不知道你的意思。对不起,我的意思是,如果输入名称为Name100、Name1、Name2、Name101、Name103,我可以使用此代码吗?@LeoChan:使用它,看看会发生什么。我不明白你为什么要问。@leo chan-让我知道这是否有效。可以将隐藏字段值设置为要检查的所有字段名。
<?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
    )*/
?>