PHP - POST数据的奇怪问题

AVP*_*mer 0 php post

我正在编写一个简单的联系表单,以下代码给我带来了麻烦:

if(!strlen($_POST['lastname']) > 0){
    echo '<p class="message error">Please enter the parent\'s last name.</p>';
}

if(!strlen($_POST['comments']) > 5){
    echo '<p class="message error">Please tell us a little more in the comments field.</p>';
}
Run Code Online (Sandbox Code Playgroud)

相关表格要素:

<textarea name="comments" cols="60" rows="5"><?=(isset($_POST['comments']) ? $_POST['comments'] : '')?></textarea>
Run Code Online (Sandbox Code Playgroud)

当我将两个字段留空时,只显示第一条错误消息(以及其他未显示的消息),而评论字段的消息则不显示.

如果我提交少于5个字符的注释字段,错误检查甚至会返回错误,但错误消息不会打印.另外,当我提交空白并打印出0时,我甚至回应了注释字段的strlen().

任何人都可以看到这里的问题是什么?

dec*_*eze 5

if (!strlen > 0)首先评估strlen,其给出,比如说,10.这随后通过否定!false.是当时相比,> 0,这是false因为false将被转换为00 > 0false.反过来说,如果字符串实际上是空的,那么条件就是true.

你想要if (!(strlen > 0))if (strlen <= 0).