0

私は PHP を初めて使用するので、これが混乱しているように見える場合は申し訳ありません... 次の 3 つの関数 (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,$emailglobalこれには、関数でキーワード (またはその他のオプション) を使用する必要がありますが、これは不適切な方法と見なされます。変数を渡すのが最善

次のように呼ばれます:

$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 に答える