strlen不起作用

时间:2013-02-04 13:25:27

标签: php function

我只是制作一个简单的剧本,但它不起作用。

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");

当我向脚本发送数据时,该功能不会检查这个。


编辑:我就像你写的那样,现在脚本不想重定向。

Full script

4 个答案:

答案 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


注意

  1. 整个 ext/mysql PHP扩展程序(提供名为mysql_的所有函数)为officially deprecated as of PHP v5.5.0,将来会被删除。因此,请使用PDOMySQLi
  2. 好读

    1. The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead
    2. PDO Tutorial for MySQL Developers
    3. Pdo Tutorial For Beginners

答案 3 :(得分:1)

strlen($length)替换为行中的$length

if(strlen($length) < $min_length || strlen($length) > $max_length)

你正在考虑没有意义的长度。