我想知道如何限制用户输入,例如HTML maxlength属性,但是使用PHP,示例会很好吗? MySQL varchar(255)是限制用户字符输入的一种方法吗?只依靠MySQL来做这件事的缺点是什么?
答案 0 :(得分:6)
你看过strlen了吗?
$input = $_GET['input'];
if ( strlen($input) > 255 ){
throw new Exception('Cannot have input exceeding 255 characters');
}
计算MySQL以截断字符串长度的主要问题是缺少错误处理。如果用户输入被截断到一个长度,他们可能不打算这样做,并且(可能)更好地显示错误页面。
答案 1 :(得分:2)
substr($string, $start, $length)
这会缩短你的字符串。
$ start应该从0开始,从第一个字符开始
$ length是你想要字符串的时间长度。
答案 2 :(得分:1)
在没有通知的情况下被动缩短输入是不好的。抛出错误更好。但在我看来,最好的解决方案是让用户不要在第一时间输入太多内容。对于字段来说这很容易:
<input maxlength="255" />
大多数浏览器会阻止用户输入更多内容。 <textarea>
更难以限制,但可以通过一些简单的javascript来完成。 Twitter这样做。请考虑以下示例,该示例在textarea上方显示字符数:
<html>
<script type="text/javascript">
function numberOfCharacters(textbox,limit,indicator) {
chars = document.getElementById(textbox).value.length;
document.getElementById(indicator).innerHTML = limit-chars;
}
</script>
<body>
<label for="mytextbox">
Message (140 char. max.)
<span id="characterlimit">140</span>
</label>
<br/>
<textarea id="mytextbox" rows="2" cols="40" onkeyup="numberOfCharacters('mytextbox',140,'characterlimit');"></textarea>
</body>
</html>
此粗略示例不强制执行字符限制,但它确实通知用户该限制。将此与Yacoby的strlen()示例结合使用,如果用户忽略警告并且无论如何都超出限制,则抛出错误。那时你已经尽力防止过度打字,用户只能责怪自己。
如果你要施加一个字符限制,在他打字小说之前通知用户并为他继续计算是很常见的。
答案 3 :(得分:1)
strlen()是整个PHP中最慢的函数之一。最佳解决方案是:
<?php
$text = "some text";
if (isset($text[255])) {
echo 'Text is too long. It should be no longer than 255 characters';
}
?>