PHP验证函数返回值?

时间:2013-04-16 21:51:05

标签: php forms function validation

我正在尝试创建小函数来验证我的每个表单元素。但我遇到了一些困难。我对PHP函数一般都很新。

目前我正在尝试为表单中的'surname'条目创建验证函数。这就是我所拥有的:

//Call surname validation function
If (validSurname($surname) === false) {
    $mistakes[] = 'Your surname is either empty or Enter only ALPHABET characters.';
} 
function validSurname($surname) {
    $surname = trim($surname);
    if (empty($surname) || (!ctype_alpha(str_replace(' ', '', $surname)))) {
        $isValid = false;
    } else {
        //accept surname entry and sanitize it
        $surname = mysql_real_escape_string(stripslashes($surname));
    }
    return $isValid;
}

所以目前我使用类似的东西来验证电子邮件,并且它可以正常工作。但现在我想通过某些阶段传递姓氏,例如:

$surname = trim($surname);

要在函数外部访问这个新值然后输入数据库,我是否需要在函数末尾返回它?例如回报$ surname;在功能结束时?

简单地说 - 我如何在函数之外使用$ surname的新值(而不是在表单中输入的初始值)?

4 个答案:

答案 0 :(得分:1)

你应该考虑你的功能是什么。在我看来,你可能需要两个函数isValidSurname,这将返回一个布尔值为true或false,formatSurname将获取有效的姓氏并返回正确格式化的函数。

答案 1 :(得分:0)

您应该在函数中将其设置为全局。我不会使用与您作为函数参数使用相同的变量名称。如果你想弄乱$ surnameVar,请执行以下操作:

function validSurname($surname) {
    global $surnameVar;
    $surnameVar = trim($surname);
    if (empty($surname) || (!ctype_alpha(str_replace(' ', '', $surname)))) {
        $isValid = false;
    } else {
        //accept surname entry and sanitize it
        $surname = mysql_real_escape_string(stripslashes($surname));
    }
    return $isValid;
}

答案 2 :(得分:0)

你要么必须使用全局变量,要么pass $surname by reference如果你想按照你第一次写它的方式去做。

或者,您可以传回修改后的字符串,如果失败则根本不传回字符串。

$surname = validSurname($surname);
if (strlen($surname) == 0) {
    $mistakes[] = 'Your surname is either empty or Enter only ALPHABET characters.';
}

function validSurname($surname) {
    $surname = trim($surname);
    if (empty($surname) || (!ctype_alpha(str_replace(' ', '', $surname)))) {
        $surname = '';
    } else {
        //accept surname entry and sanitize it
        $surname = mysql_real_escape_string(stripslashes($surname));
    }
    return $surname;
}

答案 3 :(得分:0)

您对函数名称更明确,并返回新值。

例如:

function isSurnameValid($surname) {
    return (empty($surname) || (!ctype_alpha(str_replace(' ', '', $surname)))) ? false : true;
}

function cleanSurname($surname) {
    $surname = mysql_real_escape_string(stripslashes(trim($surname)));
    return $surname;
}

通过这种方式,您可以拥有清晰的描述性功能名称,并且每个功能都有一个单一的责任。