我正在编写一个简单的联系表单,以下代码给我带来了麻烦:
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().
任何人都可以看到这里的问题是什么?
if (!strlen > 0)首先评估strlen,其给出,比如说,10.这随后通过否定!到false.这是当时相比,> 0,这是false因为false将被转换为0和0 > 0的false.反过来说,如果字符串实际上是空的,那么条件就是true.
你想要if (!(strlen > 0))或if (strlen <= 0).