我只是制作一个简单的剧本,但它不起作用。
function check_length($string, $min_length, $max_length) {
$length = strlen($string);
if(strlen($length) < $min_length || strlen($length) > $max_length)
{
header("Location: /kontakty/blad");
}
}
check_length($_POST["name"], "3", "45");
check_length($_POST["surname"], "3", "45");
check_length($_POST["group_id"], "1", "11");
当我向脚本发送数据时,该功能不会检查这个。
编辑:我就像你写的那样,现在脚本不想重定向。
答案 0 :(得分:8)
你有一个错误。删除$ length上的strlen。
function check_length($string, $min_length, $max_length) {
$length = strlen($string);
if($length < $min_length || $length > $max_length)
{
header("Location: /kontakty/blad");
}
}
答案 1 :(得分:3)
似乎您在unicode'd网站(kontakty)上使用此脚本,并假设您需要使用mb_strlen
代替strlen
进行此项工作。此外,在这种情况下,使用trim
或“a”会给出2个长度。
function check_length($string, $min, $max) {
$length = mb_strlen(trim($string), 'utf-8');
if ($length < $min || $length > $max) {
header('Location: /kontakty/blad');
}
}
如果mb_strlen
不适合你,可以使用:
function strlen_unicode($str) {
return count(preg_split(
'~~u', $str, -1, PREG_SPLIT_NO_EMPTY));
}
答案 2 :(得分:2)
function check_length($string, $min_length, $max_length) {
$length = strlen($string); <= calculated once
if(strlen($length) < $min_length || strlen($length) > $max_length)
^^^^^^^^^^^^^ ^^^^^^^
no need of this it will calculate length of
$length no string
{
header("Location: /kontakty/blad");
}
}
试
function check_length($string, $min_length, $max_length) {
if(strlen($string) < $min_length || strlen($string) > $max_length)
{
header("Location: /kontakty/blad");
}
}
according to the code in your comment link
ext/mysql
PHP扩展程序(提供名为mysql_的所有函数)为officially deprecated as of PHP v5.5.0,将来会被删除。因此,请使用PDO
或MySQLi
好读
答案 3 :(得分:1)
将strlen($length)
替换为行中的$length
:
if(strlen($length) < $min_length || strlen($length) > $max_length)
你正在考虑没有意义的长度。