1

好的,我在 PHP 方面相当新,我正在尝试制作联系表格。有些字段我需要具有某些字符。

if (!empty($_POST['title'])) {
    $title = $_POST['title'];
    }
    elseif (strlen($title)>=1||strlen($title)<6)||strlen($title)>50 {
        $error .= "Length of your Subject must be more than 6 characters. <br />";
    }
else {
    $error .= "Please enter the Subject. <br />";
}

$error 存储填写表单时出现的所有错误。最后,表单检查,如果没有发现错误,则消息发送成功。

我想要的是? 如果字符串长度小于 3 但大于或等于 1,我想显示 elseif 语句中所述的错误。如果长度大于 50 个字符,也应该显示错误。

如果该字段为空,则应显示 else 语句中提供的最后一个错误。

发生了什么? 每当我将该字段保留为空时,它都会显示第一个错误而不是第二个错误。如果我在该字段中只输入 1 个字符,则不会显示错误。

我正在摸索,我做了很多试验和错误,但似乎没有任何效果。如果有人可以转发,那将是一个巨大的帮助。这是我的第一个 PHP 项目,只是因为我的一些读者想要它,而我还没有完全学会这门语言。

4

5 回答 5

2

看你把 if else 语句弄乱了.....试试这种方式,

if (!empty($_POST['title'])) 
{
    $title = $_POST['title'];

    if (strlen($title)>=1 && strlen($title)<6)||strlen($title)>50)
    {
        $error .= "Length of your Subject must be more than 6 characters. <br />";
    }
}

else 
{
$error .= "Please enter the Subject. <br />";
}
于 2013-01-24T13:12:05.140 回答
1

您的条件始终(strlen($title)>=1||strlen($title)<6)为真,因为标题的长度是 >= 1 或 < 6(或两者兼而有之)。您可能想使用&&而不是||.

于 2013-01-24T13:10:43.610 回答
0

只有当字符串为空时才会进入 else 。

于 2013-01-24T13:10:33.797 回答
0

如果长度在 1 到 6 个字符之间且超过 50 个字符,为什么会显示相同的错误?你的 if 语句也是错误的。如果它是空的,你将去elseif你正在使用的地方,$title但还没有$title定义任何变量。

if(!empty($_POST['title'])) {
    $title = $_POST['title'];

    if(strlen($title) >= 1 && strlen($title) < 6) {
        $error .= "Length of your Subject must be more than 6 characters. <br />";
    } elseif(strlen($title)>50) {
        $error .= "Length of your Subject must be no more than 50 characters. <br />";
    } else {
        // Length is between 6 and 50 characters, i.e. it is valid.
    }
} else {
    $error .= "Please enter the Subject. <br />";
}
于 2013-01-24T13:15:37.187 回答
0

就像 Dan Berindei 所说,您使用 or 时应该使用 and 来检查 $title 是否不为空。实际上,您根本不需要检查它是否至少是一个字符,因为您已经验证它不是一个空字符串。

这里有一些更清洁的东西:

if (!empty($_POST['title'])) {
    $title = $_POST['title'];

    if (strlen($title)<6)||strlen($title)>50) {
        $error .= "Length of your Subject must be between than 6 and 50 characters. <br />";
    }
}else {
    $error .= "Please enter the Subject. <br />";
}
于 2013-01-24T13:16:02.340 回答