php:验证POST的最佳方法

时间:2013-01-28 10:05:31

标签: php validation post

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

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

此代码检查“名称”是否实际设置,这是明显且清晰且需要的。 其次,它检查用户是否在文本字段中键入内容以给出name的值。 但是,如果用户给出SPACE“”作为输入它接受它,因为它不是空的它有空格。

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

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

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

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

7 个答案:

答案 0 :(得分:5)

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

删除空,然后进行修剪。

说实话,除非你打开通知,否则你甚至不需要使用isset:

    if(trim($_POST['name']) !== "") {

答案 1 :(得分: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";
}

答案 2 :(得分:0)

试试这个

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

只需将您的上述代码更改为此

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

答案 5 :(得分:0)

尝试使用此

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

答案 6 :(得分: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";
    }