PHP返回多个函数

时间:2012-07-08 20:40:59

标签: php

我是PHP的新手,所以我很抱歉,如果这看起来像一团糟......我正在尝试使用以下三个函数验证表单 - checkName,checkEmail和checkMessage。我遇到的问题是当我提交表单时,它总是显示第一个错误,即使输入正确。谁能告诉我我做错了什么?

function checkName(){

    if($name == ''){
        print "Please enter your name!<br />";
        return false;
    }
    else{
        if(strlen($name)<2) {
            print "Your name should be more than 1 characters long!<br />";
            return false;
        }
        else{
            return true;
        }
    }
}
function checkEmail(){

    if($from == '') {
        print "Please enter your email address!<br />";
        return false;
    } 
    else{
        if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $from)){
            print "Please enter a valid email address!<br />";
            return false;
        }
        else{
            return true;
        }
    }
}
function checkMessage(){

    if($message == '') {
        print "Please enter your message!<br />";
        return false;
    }
    else{
        if(strlen($message)<10) {
            print "Your message should be more than 10 characters long!<br />";
            return false;
        }
        else{
            return true;
        }
    }
}

if($validation == ''){

    $a = checkName();
    $b  =  checkEmail();
    $c = checkMessage();

    $result = array($a, $b, $c);

    return $result;

2 个答案:

答案 0 :(得分:3)

将变量传递给测试函数以进行检查。你现在拥有它的方式,它会假设你正在使用$name,$message,$email的全局变量。这需要在函数中使用global关键字(或其他一些选项),但被认为是不好的做法。最好传递变量

被称为:

$a = checkName($name);
$b  =  checkEmail($email);
$c = checkMessage($message);

解释

// Pass variable to function
function checkName($name){

    if($name == ''){
        print "Please enter your name!<br />";
        return false;
    }
    else{
        if(strlen($name)<2) {
            print "Your name should be more than 1 characters long!<br />";
            return false;
        }
        else{
            return true;
        }
    }
}
function checkEmail($email){
  // etc...
}
function checkMessage($message){
  // etc...    
}

顺便说一句,作为经常需要维护其他人编写的旧PHP代码的人,我可以告诉您高度建议您不要使用$a,$b,$c之类的变量名称。而是让它们像$nameResult, $emailResult, $messgeResult一样可读。

答案 1 :(得分:0)

在函数中,您的变量未定义。如果完全定义了它们,则必须在函数中使用global $variable来在函数中定义它们

例如: 坏:

$var = 'Hello';
function fun () {return $var;}
echo fun () . ' world';

好:

$var = 'Hello';
function fun () {
    global $var;
    return $var;
}
echo fun () . ' world';