我想在项目中使用Randomness组件,但无法对其进行配置。当我在做什么
$ss = Yii::app()->Randomness::randomString(32);
这在actionIndex()中引发了一个错误
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in /protected/controllers/SiteController.php on line 32
我把它放在我的main.php配置文件
中'components'=>array(
'Randomness'=>array('class'=>'Randomness'),
[......]
),
所以,你能帮助我吗?
的 ----------------------------------------- ------------------ Editted ------------------------------- ------------------------------------ 的
感谢您的所有答案,但似乎Randomness无法使用1and1.com托管。但好消息是我找到了另一种生成随机字符串的好方法。我正在使用似乎在1and1.com上有效的“/ dev / urandom”。这是代码:
<?php
class Random extends CApplicationComponent
{
public static function intRandom($min, $max)
{
$bits = '';
$diff = $max-$min;
$bytes = ceil($diff/256);
$fp = @fopen('/dev/urandom','rb');
if ($fp !== FALSE) {
$bits .= @fread($fp,$bytes);
@fclose($fp);
}
$bitlength = strlen($bits);
for ($i = 0; $i < $bitlength; $i++) {
$int = 1+(ord($bits[$i]) % (($max-$min)+1));
}
return $int;
}
public static function strRandom($length) {
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_-+=|]}[{;:?.,></";
$size = strlen( $chars );
for( $i = 0; $i < $length; $i++ ) {
$str .= $chars[ self::intRandom(0, strlen($chars)-1) ];
}
return $str;
}
}
但是现在我还有另外一个问题,我是否会遇到一些问题,因为$ char中使用过的字符,我需要在数据库中保存为salt?
答案 0 :(得分:1)
为什么不只是Randomness::randomString(32);
? (按文件规定)
答案 1 :(得分:0)
Yii::app()->Randomness->randomString = 32;
确保您的班级随机性具有 randomString 属性。