1

我只是做了一个简单的脚本,但它不起作用。

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

当我将数据发送到脚本时,该函数不会检查这一点。


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

完整脚本

4

4 回答 4

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");
     }
}
于 2013-02-04T13:27:33.180 回答
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));
}
于 2013-02-04T13:51:10.803 回答
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");
  }
}

根据您评论链接中的代码


笔记

  1. 整个ext/mysqlPHP 扩展提供了所有以 mysql_ 为前缀的函数,从 PHP v5.5.0 开始正式弃用,并将在未来删除。所以使用PDO或者MySQLi

好读

  1. 不推荐使用 mysql 扩展并将在将来删除:请改用 mysqli 或 PDO
  2. MySQL 开发人员的 PDO 教程
  3. Pdo 初学者教程
于 2013-02-04T13:42:45.427 回答
1

在行中替换strlen($length)$length

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

你正在取长度的长度,这是没有意义的。

于 2013-02-04T13:27:36.557 回答