PHP发布所有表单输入而不为每个输入创建变量

时间:2013-11-20 15:22:48

标签: php post

通常当我使用PHP时,我为每个表单输入创建一个变量和post语句,如下所示:

   $myVar1 = $_POST["formItem1"];
   $myVar2 = $_POST["formItem2"];
   ect......

我知道我是否使用:

  echo $_POST;

我可以从表单输入中获取所有键和值,但我不知道如何在脚本中使用它们。

所以我想我有两个问题:

  1. 如何在不为每个输入创建变量的情况下快速发布所有表单输入?

  2. 如何在不将脚本分配给特定变量的情况下使用脚本中的发布?

7 个答案:

答案 0 :(得分:6)

要简单地回显所有输入,您可以使用foreach循环:

foreach ($_POST as $key => $value) {
    echo $value.'<br/>';
}

如果您不想将它们存储在变量中,请使用数组:

$data = array();
foreach ($_POST as $key => $value) {
    $data[] = $value;
}

现在,$data是一个包含$_POST数组中所有数据的数组。您可以随意使用它。

答案 1 :(得分:0)

您不必分配给变量。您可以直接使用$_POST['input_name']

如果你想处理每个被传递的参数,你可以使用foreach循环:

foreach ($_POST as $key => $val)
{
  echo "$key : $val <br/>";
}

答案 2 :(得分:0)

对于这个快速检查和测试的例子我通常只使用print_r()函数: documentation here

引自文档:

  

print_r()以人类可读的方式显示有关变量的信息。

一行易于打开和关闭(带注释) - 无需使用任何形式的变量

print_r($_POST);

如果我需要我的输出很好并且可读,我想按如下方式扩展它:

function print_r2($x){
     echo '<pre>';
     print_r($x);
     echo '</pre>';
}

然后您可以拨打:print_r2($_POST);

这样您就可以在html页面上获得预先格式化的文本块,并且可以看到$_POST对象打印输出提供的换行符和标签间距

答案 3 :(得分:0)

另一种提取(除了extract function)变量的方法是;

$array = array('foo'); // Which POST variables do you want to get
foreach($array as $key) {
    if(!isset(${$key})) { // Check if variable hasn't been assigned already
        ${$key} = $_POST[$key];
    }
}
echo $foo;

我不推荐它,因为跟上它会变得非常混乱。

答案 4 :(得分:0)

查看$_POST中的所有内容对调试

非常有用
echo '<pre>'.print_r($_POST, true).'</pre>';

访问特定复选框

<强> HTML

<input type="checkbox" value="something" name="ckbox[]" checked>
<input type="checkbox" value="anotherthing" name="ckbox[]" checked>

<强> PHP

echo $_POST['ckbox'][0]; // something
echo $_POST['ckbox'][1]; // anotherthing

// isolate checkbox array
$ckbox_array = $_POST['ckbox'];

答案 5 :(得分:0)

定义一个函数,允许您按名称(键)访问特定的$ _POST项:

function get_post_value($name, $default)
{
    if ( isset($_POST[$name]) ) {
        return $_POST[$name];
    } else if ( $default ) {
        return $default;    
    }
    return null;
}

$ default允许您传递一个值,如果您指定的键不在$ _POST数组中,则可以将其用作回退。

现在您可以引用$ _POST项目而不将它们分配给变量,并且不必担心它们是否已设置。例如:

if ( get_post_value('user-login-submit', false) ) {
    // attempt to log in user
}

答案 6 :(得分:-2)

您可以使用extract($_POST),它会为您创建变量。

例如,您可以拥有您发布的代码:

<?php

$_POST["formItem1"] = "foo";
extract($_POST);
echo $formItem1; // will display "foo"

?>

编辑:它不是PHP explode,而是extract