随机字符串Codeigniter

时间:2014-06-06 06:43:35

标签: php codeigniter

在我的控制器中,我试图从我的函数run_key()生成一个随机字符串我已经尝试了但没有生成随机字符串。如果我像这个例子那样工作

public function index () {
  $this->load->helper('string');
  // Currently Hard Coded Key
  $data['encryption_key'] = random_string(&^)(*&sf465sd4fsd6^%1321^%#, 128);

  //Also Tried
  $data['encryption_key'] = random_string($this->run_key(), 128);
  $data['encryption_key'] = random_string($len, 128);
}

我正在尝试获取它,因此可以从我的函数运行键()生成一个随机字符串。

在同一个控制器上

public function run_key() {

$chars = array(
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '?', '!', '@', '#',
'$', '%', '^', '&', '*', '(', ')', '[', ']', '{', '}', '|', ';', '/', '=', '+'
);

shuffle($chars);

$num_chars = count($chars) - 1;
$token = '';

for ($i = 0; $i < $len; $i++){
$token .= $chars[mt_rand(0, $num_chars)];
}

return $token;
}
}

1 个答案:

答案 0 :(得分:5)

首先,您正在使用函数助手random_string()错误。

样本用法:

  

<强> echo random_string('alnum', 16);

     

第一个参数指定字符串的类型,第二个参数指定长度。可以使用以下选项: alpha, alunum, numeric, nozero, unique, md5, encrypt and sha1

因为您正在滚动自己的随机字符串。你真的不需要这样做。

其次,在for循环中,$len未声明。也许你的意思是$num_chars而不是$len

public function run_key() {

    $chars = array(
        'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
        'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
        'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
        'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '?', '!', '@', '#',
        '$', '%', '^', '&', '*', '(', ')', '[', ']', '{', '}', '|', ';', '/', '=', '+'
    );

    shuffle($chars);

    $num_chars = count($chars) - 1;
    $token = '';

    for ($i = 0; $i < $num_chars; $i++){ // <-- $num_chars instead of $len
        $token .= $chars[mt_rand(0, $num_chars)];
    }

    return $token;
}