Question

I'm adding some very basic validation to a "name" form field. Generally, it's impossible to actually validate a name, but I figured I could at least verify that it's not empty, greater than maybe 2 characters (Al is the shortest name I can think of), and that those characters aren't just empty space.

Here's the conditionals I'm using:

// Check length of name field
if(!isset($name) || $name < 2 || (strlen($name) > 0 && strlen(trim($name)) == 0)) {
    // Name field only spaces
    if((strlen($name) > 0 && strlen(trim($name)) == 0) || trim($name) == '') {
        $errors['name'] = "Please enter a real name...";
    }
    // Name too short
    else {
        $errors['name'] = "Are you sure <strong>".htmlspecialchars($name)."</strong> is your name?";
    }
    $msg_type = "error";
}

However, when I run this with a valid name, I get the "Name too short" error. I know it's got to be a problem with how I'm combining the conditionals, but I can't figure out where that problem lies.

Was it helpful?

Solution

$name < 2 doesn't work. You're trying to use strlen($name) < 2.

OTHER TIPS

Well, there is a tool called regex which people have invented for string matching and it could be pretty conveniently used for validation cases like yours. If you want to validate a word let's say with at least 2 characters of length, you could do the following:

if(!preg_match('/\b\w{2,}/', $name)) {
    $errors['name'] = "Are you sure <strong>".htmlspecialchars($name)."</strong> is your name?";
}

Where: \b: word boundary \w: word character {2,}: two or more times for the word character

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top