12

HTML 示例:

  <form method="post" id="form" action="form_action.php">
    <input name="email" type="text" />
  </form> 

用户填写输入字段:dfg@dfg.com

echo $_POST['email']; //output: dfg@dfg.com

表单中每个输入的名称和值都会发送到服务器。有没有办法获得 name 属性?所以像..

echo $_POST['email'].name; //output: email

编辑:澄清对我的问题的一些困惑;

这个想法是使用开关动态验证每个输入。我使用一个单独的验证类来保持一切清洁。这是我最终结果的一个简短示例:

//Main php page
if (is_validForm()) {
    //All input is valid, do something..
}

//Separate validation class    
function is_validForm () {
    foreach ($_POST as $name => $value) {
        if (!is_validInput($name, $value)) return false;
    }
    return true;
   }

function is_validInput($name, $value) {
    if (!$this->is_input($value)) return false; 

    switch($name) {
        case email: return $this->is_email($value);  
        break;
        case password: return $this->is_password($value);
        break;
//and all other inputs
        }
    }

感谢raina77ow 和其他所有人!

4

8 回答 8

22

您可以在循环中处理 $_POSTforeach以获取名称及其值,如下所示:

foreach ($_POST as $name => $value) {
   echo $name; // email, for example
   echo $value; // the same as echo $_POST['email'], in this case
}

但是您无法从$_POST['email']value 中获取属性的名称 - 它是一个简单的字符串,并且它不存储其“来源”。

于 2012-11-14T11:23:56.857 回答
3
foreach($_POST as $key => $value)
{
 echo 'Key is: '.$key;
 echo 'Value is: '.$value;
}
于 2012-11-14T11:24:25.560 回答
1

如果你想动态地做,你可以这样做:

foreach ($_POST as $key => $value)
{
    echo 'Name: ', $key, "\nValue: ", $value, "\n"; 
}
于 2012-11-14T11:26:02.083 回答
1

循环你object/arrayforeach

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

或者您可以使用var_dumporprint_r调试大变量,例如arraysor objects

echo '<pre>' . print_r($_POST, true) . '</pre>';

或者

echo '<pre>';
var_dump($_POST);
echo '</pre>';
于 2012-11-14T11:26:43.933 回答
1

其实我找到了一些可能对你有用的东西,看看这个-

http://php.net/manual/en/function.key.php

这个页面说下面的代码,

<?php
$array = array(
    'fruit1' => 'apple',
    'fruit2' => 'orange',
    'fruit3' => 'grape',
    'fruit4' => 'apple',
    'fruit5' => 'apple');

// this cycle echoes all associative array
// key where value equals "apple"
while ($fruit_name = current($array)) {
    if ($fruit_name == 'apple') {
        echo key($array).'<br />';
    }
    next($array);
}
?>

会给你输出,

水果
1 水果4
水果5

就如此容易。

于 2012-11-14T11:33:58.877 回答
0

current(array_keys($_POST)) 应该给你你正在寻找的东西。虽然没有测试。

于 2012-11-14T11:27:23.430 回答
0

查看已提交或将要提交的表单名称的好方法

<?php
$i=1;
foreach ($_POST as $name => $value) {
echo "</b><p>".$i." ".$name; 
echo " = <b>".$value; 
$i++;
}
?>

只需将您的表单发送到此脚本,它就会向您显示正在提交的内容。

于 2013-12-09T09:52:35.877 回答
-2

您可以使用 foreach 循环来获取所有设置的值。

foreach ($_POST AS $k=>$v){
    echo "$k is $v";
}

你的例子

echo $_POST['email'].name; //output: email

没有意义,因为您已经知道要访问的值的名称?

于 2012-11-14T11:25:44.480 回答