如何在PHP中回显键名称本身

时间:2014-10-23 09:31:03

标签: php function class

<form name="contact" method="POST" action="">
<input type="text" name="first_name">
<input type="submit" name="submit">
</form>

我想回复first_name字符串。即使没有设置name="first_name"的值。

我到底想要实现什么? 看到变量$ name,我希望它能回显first_name。 所以,我可以说我在表单中添加了另一个输入,

<input type="text" name="surname">

我希望我的函数check_empty说:“请不要将姓氏字段留空。”以及:“请不要将名称字段留空。 “

    class validator{        
    function check_empty($first_name){
        if(empty($first_name)){
            echo "Please don't leave the $first_name field empty.";
        }
    }   
}

修改 基本上我试图做的是仅使用一个函数来验证所有空字段。并显示相关消息,如果firstname字段为空,请告诉它们为空。如果姓氏是空的,告诉他们它是空的。我不想使用多个函数来验证不同的空字段。

4 个答案:

答案 0 :(得分:2)

如果要在用户提交值之前验证这一点,则必须使用JS

执行此操作

如果要使用PHP验证,则必须检查是否按下了提交并检查名字值:

if(isset($_POST['submit'])) {
    //check first name value
    if(isset($_POST['first_name']) && $_POST['first_name'] != '') {
       //enter code here
    } else {
       echo "Please don't leave the $_POST['first_name'] field empty.";
    }
}

或者,使用你的功能:

if(isset($_POST['submit'])) {
    check_empty($_POST['first_name']);
    //do whatever
}

上课:

if(isset($_POST['submit'])) {
    $validation = new validator();
    $validation->check_empty($_POST['first_name']);
}

L.E:我将使用我提供的后一个例子。 SO:

if(isset($_POST['submit'])) {
    $validation = new validator();

    //you do this for every `_POST` you have
    $values = array();
    $values['label'] = 'First Name'; 
    $values['value'] = $_POST['first_name'];

    $validation->check_empty($values); 
}

//check_empty needs a small adjustment now:
function check_empty($value){
    if(empty($value['value'])){
        echo "Please don't leave the " . $value['label'] . " field empty.";
    }
}  

希望它有所帮助!
继续编码!
顷。

答案 1 :(得分:1)

我假设您正在循环$_POST并呼叫check_empty。在这种情况下,请执行以下操作

$objValidator = new validator();
$arrErrors = array();
foreach($_POST as $key => $value) {
    $arrErrors[] = $objValidator->check_empty($key, $value);
}
array_filter($arrErrors); //Remove FALSE values, so only actual errors are stored

if( count($arrErrors) ) { 
   echo implode("<br />", $arrErrors);
   //Show form?
} else {
   //Everything is filled in
}

然后,只需修改你的方法;

function check_empty($key, $value){
    if(empty($value)){
        return "Please don't leave the ". $key ." field empty.";
    } else {
        return FALSE;
    }
}  

答案 2 :(得分:1)

您可以在一行中获取空字段的名称:

$empty_fields = array_keys(array_diff_key($_POST, array_filter($_POST)));

记住KISS - 保持简单,愚蠢。

答案 3 :(得分:0)

好的,你们帮忙,这就是我的所作所为。它几乎给了我想要的结果。

    class validator{        
    function check_empty($post_array){
        foreach($post_array as $key=>$value){
            if(empty($value)){
                echo $key . " field cannot be left empty" . "</br>";
            }
        }
    }
}

    if(isset($_POST["submit"])){
    $Validator = new validator();
    $Validator->check_empty($_POST);
}

再次感谢:)