PHP发布内容字符长度验证失效(内容验证异常),求排查及正确方案
字符长度验证逻辑问题分析
当前验证方式是否正确?
当前的字符长度验证方式完全错误,标题看似功能正常只是巧合,本质上两个验证函数的逻辑都存在严重问题。
问题所在
1. 逻辑判断条件完全混乱
以内容验证函数为例,原条件:
if (!$content < 500 || !$content > 2000)
这个逻辑等价于 $content >= 500 || $content <= 2000,任何数字都满足这个条件,导致if分支永远执行。而你需要的是判断内容长度是否超出500-2000的范围,正确的非法条件应该是 $content < 500 || $content > 2000,合法条件则是 $content >=500 && $content <=2000。
2. 函数return语句位置错误
两个函数里只有else分支有return语句,if分支没有返回值,导致符合“合法”条件时函数默认返回null。后续用=== false判断时,null === false结果为false,逻辑完全混乱;而当你输入500以上字符时,实际是进入了永远为真的if分支,函数返回null,但可能因其他隐性逻辑(比如PHP松散比较的误判)触发了跳转。
3. 变量初始化不规范
$result;未初始化值,虽然PHP允许,但属于不规范写法,容易引发不可预期的问题。
修复后的代码示例
标题验证函数
function postLengthTitle($post_title_test) { $titleLength = strlen($post_title_test); // 标题长度在40-200之间时返回true,否则返回false return $titleLength >= 40 && $titleLength <= 200; }
内容验证函数
function postLengthContent($content_test) { $contentLength = strlen($content_test); // 内容长度在500-2000之间时返回true,否则返回false return $contentLength >= 500 && $contentLength <= 2000; }
调用逻辑
if (!postLengthTitle($post_title_test)) { header("Location: ../content/makeapost.php?" . htmlspecialchars($postpage2)); exit(); } if (!postLengthContent($content_test)) { header("Location: ../content/makeapost.php?" . htmlspecialchars($postpage3)); exit(); }
内容的提问来源于stack exchange,提问作者Votum
相关产品推荐
相关产品推荐

