class User extends CActiveRecord:
Quote
public function rules()
{
return array(
......
array('pwd','length','max'=>32),
array('pwd', 'compare', 'compareAttribute'=>'pwd2','on'=>'create'), //这里如果去掉'on'=>'create'就能正常校验
......
array('verifyCode', 'captcha', 'allowEmpty'=>!extension_loaded('gd')),
);
}</div></div>
class UserController extends CController:
Quote
public function actionCreate()
{
$user=new User;
if(isset($_POST['User']))
{
//$user->attributes=$_POST['User'];
$user->setAttributes($_POST['User'], 'create');
if($user->save()){
if(Yii::app()->user->getState('role')=="admin"){
$this->redirect(array('show','id'=>$user->id));
}else{
$this->redirect(array('create_ok','id'=>$user->id));
}
}
}
$this->render('create',array('user'=>$user));
}</div></div>
请问这样写有错吗?
但是我测试的时候pwd=pwd2的校验并不起作用,就算输入的pwd不等于pwd2也可以通过验证,请问怎么回事呢?
另外,我没有采用Yii的RBAC(我不需要这么复杂的功能),在用户登录的时候直接把用户角色用setState('role')储存在session(基于cookies)中,请问这样安全吗?setState有可能被访客伪造吗?
谢谢。