在yii我正在创建登录模块。我想仅在用户名和密码正确并且需要将此用户的ID存储到“成功”表中时才授予用户访问权限。但是当只有用户名是正确的并且密码错误时,我想将该用户的id存储到'尝试'表中,以便只给他3次机会输入正确的密码。但是当我实现这个时,当密码错误时,条目不会进入尝试表。我创建了ActionLogin()方法作为 -
public function actionLogin()
{
$model=new LoginForm;
$command = Yii::app()->db->createCommand();
// if it is ajax validation request
if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
// collect user input data
if(isset($_POST['LoginForm']))
{
$model->attributes=$_POST['LoginForm'];
// validate user input and redirect to the previous page if valid
if ($model->validate())
{
if($model->login()) {
$command->insert('attempt', array(
'id'=>Yii::app()->user->getId(),
));
$this->redirect(Yii::app()->user->returnUrl);
}
if(!$model->login())
{
$command->insert('attempt', array(
'id'=>Yii::app()->user->getId(),
));
}
}
}
// display the login form
$this->render('login',array('model'=>$model));
}
我需要做些什么更改才能在密码错误时将用户的id输入到尝试表中。请帮帮我。
答案 0 :(得分:0)
如评论中所述:
正在访问基于Yii的网站的用户没有分配用户ID,只有登录的用户才分配了userId(这是有道理的......)。
最好的方法是对登录尝试进行基于IP的检查。您可以通过以下代码检索用户的IP:
Yii::app()->request->userHostAddress
还可以将这个答案归功于@Stu和@ Nikos-Tsirakis