在我的控制器中,我试图从我的函数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;
}
}
答案 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;
}