前端小白做留言板,限制了留言字数在30以内(随意的设定),某天无聊输入了30个中文字符发现留言失败,遂察觉到代码有漏洞。
当时验证留言字符长度的代码如下:
preg_match("/^.{1,30}$/", $user_mes)
结果只有当中文字符在10个及以内时才可成功留言
后来尝试了另外两种写法:
strlen($user_mes) < 31
!isset($user_mes{
本文介绍了在PHP中遇到的中文字符长度限制问题,原来strlen()和mb_strlen()等函数是按字节计数的,对于UTF-8编码的中文字符可能导致误判。通过阅读博客文章,了解到iconv_strlen()函数可以准确计算字符个数,无论编码类型。最终,使用iconv_strlen()解决了在UTF-8编码环境下限制中英文混合字符长度的问题。
前端小白做留言板,限制了留言字数在30以内(随意的设定),某天无聊输入了30个中文字符发现留言失败,遂察觉到代码有漏洞。
当时验证留言字符长度的代码如下:
preg_match("/^.{1,30}$/", $user_mes)
结果只有当中文字符在10个及以内时才可成功留言
后来尝试了另外两种写法:
strlen($user_mes) < 31
!isset($user_mes{

被折叠的 条评论
为什么被折叠?
