1 回答

TA贡献2016条经验 获得超9个赞
不要将该计数发送到 PHP 代码。你是对的,这是微不足道的绕过。相反,在 PHP 中获取注释文本,然后检查其长度,如果超过 200 个字符,则拒绝它。
您的 JavaScript 代码只是为了提供 UI。实际检查应该在服务器端的实际数据上进行。
在评论中你说:
好吧,我曾经在 php 中检查输入,
strlen
但问题是:jslength
每次都给我另一个值然后 phpstrlen
。因此,当用户收到类似2 个字符的消息时,他提交数据并且 php 拒绝了它,因为strlen
在 php 中比 js 多 5 个字符length
这可能有多种原因,这里有两种可能性:
行尾的差异。一些平台使用
\r\n
(两个字符)其他平台使用\n
(一个字符)(旧的 Mac OS 使用\r
,但那是几年前的事了)。您可以在计数时将它们标准化:var content = tinymce.trim(body.innerText || body.textContent); content = content.replace(/\r\n|\r|\n/g, "\n"); return content.length;
(然后在 PHP 端也是同样的事情。)
PHP 字符串每个字符一个字节,但这不是当今世界的现实。(我不知道您是否使用了
intl
或mbstring
扩展,但如果没有,您可能想查看它们。)相比之下,JavaScript 的字符串是 UTF-16 (但它们容忍通常应该成对的孤立代理),例如,这意味着许多在 JavaScript 中算作一个字符的字符在 PHP 中算作不止一个字符。mbstring
扩展程序的功能mb_strlen
或类似功能可能会有所帮助。(一些“字符”甚至在 JavaScript 中需要两个或更多字符,因为它们使用代理对表示和/或因为它们使用组合标记,这些标记在 Unicode 中是每个单独的代码点。)
添加回答
举报