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 中是每個單獨的代碼點。)
添加回答
舉報