2

我一直在使用下面的代码通过 $_POST 验证我的用户输入:

if(isset($_POST['name']) && !empty($_POST['name'])) {
    $n=$_POST['name'];
}
else {
    $errors[] = "Please give a name";
}

此代码检查是否实际设置了“名称”,这是显而易见且需要的。其次,它检查用户是否在文本字段中输入了一些内容以提供名称值。但是,如果用户将空格“”作为输入,它会接受它,因为它不是空的,它有空格。

我找到了一种正确的方法:

if(isset($_POST['name'])) {
    $n = trim($_POST['name']);
    if(empty($n)) {
        $errors[] = "Please give a name";
    }
}

else {
$errors[] = "Please give a name";
}

但是在这里我重复了两次相同的错误信息,那么如何优化呢?

4

7 回答 7

5
if(isset($_POST['name']) && trim($_POST['name']) !== "") {
    $n=$_POST['name'];
}
else {
    $errors[] = "Please give a name";
}

取出空的,然后进行修剪。

老实说,除非您打开了通知,否则您甚至不需要 isset:

    if(trim($_POST['name']) !== "") {
于 2013-01-28T10:07:30.160 回答
2

如果不需要修剪后的字符串,可以将修剪本身移动到 if 子句:

if(isset($_POST['name']) && (trim($_POST['name']) != '') ) {
    $n=$_POST['name'];
}
else {
    $errors[] = "Please give a name";
}

如果您进一步需要它,您可以在检查之前修改输入:

$_POST['name'] = trim( $_POST['name'] );
if(isset($_POST['name']) && !empty($_POST['name'])) {
    $n=$_POST['name'];
}
else {
    $errors[] = "Please give a name";
}
于 2013-01-28T10:08:32.017 回答
0

像这样试试

if(trim(isset($_POST['name']))) {
    $n = trim($_POST['name']);
}
else {
    $errors[] = "Please give a name";
}
于 2013-01-28T10:07:22.283 回答
0

尝试

 if(isset($_POST['name'])) {
        $n = trim($_POST['name']);
     }
        if(empty($n) or !isset($_POST['name'])) {
            $errors[] = "Please give a name";
        }
于 2013-01-28T10:07:58.903 回答
0

只需将上面的代码更改为此

 if(trim(isset($_POST['name'])))
{
$n = trim($_POST['name']);
}
else 
{
$errors[] = "Please give a name";
}
于 2013-01-28T10:08:54.683 回答
0

尝试使用这个

if(isset($_POST['name']) && trim($_POST['name']) != false) {
    $n=$_POST['name'];
}
else {
    $errors[] = "Please give a name";
}
于 2013-01-28T10:09:07.213 回答
0

最后我开始使用下面的代码。更好,因为在这里我什至可以控制最少的字符数。

if(isset($_POST['name']) && strlen(trim($_POST['name'])) > 1) {
        $block->name = trim($_POST['name']);
    }
    else {
        $errors[] = "Please give a name. It should be at least two characters";
    }
于 2013-01-28T12:03:01.410 回答