0

我是 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;
4

2 回答 2

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.

于 2012-07-08T20:43:39.803 回答
0

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

示例:坏:

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

好的:

$var = 'Hello';
function fun () {
    global $var;
    return $var;
}
echo fun () . ' world';
于 2012-07-08T20:43:14.330 回答