2012-10-11 3 views
1

사용자가 시도한 시도 횟수를 유지하는 로그인 구성을 구현하려고합니다. 이는 보안상의 이유로입니다. 내 코드는 다음과 같습니다 최초의 덤프뿐만 아니라 에코 내가 시도의 정확한 수를 얻고에서 그러나 "시도 정의되지 않은 인덱스 :"로그인 시도 횟수를 계산하기위한 세션 변수

{ 
    ob_start(); 
    $_SESSION['attempts'] = 0; 
    $_SESSION['sleep'] = 0; 
    $_SESSION['ip']=$this->get_ip_address() ; 
    $login = new User('login'); 
    // renders the view file 'protected/views/site/index.php' 
    // using the default layout 'protected/views/layouts/main.php' 

    if(isset($_POST['yt0'])) 
    { 
      $login->Username = ($_POST['User']['Username']); 
      $salt = $login->getSaltByUsername($login->Username) ; 
      $login->SecretCode = $this->hasher($login->Username,($_POST['User']['SecretCode']),$salt); 
      var_dump($_SESSION) ; /*First Dump , gives all session variables correctly*/ 
      echo $_SESSION['attempts'] ; 
      Yii::app()->user->setState('attempts', $_SESSION['attempts']++); 

      var_dump($_SESSION) ; 

내가 PHP주의를 얻고있다. 여기서 내가 뭘 잘못하고 있니?

+0

표시 할 코드가 너무 제한되어있어 무엇이 될지 알기가 어렵습니다 ... setState ('시도')를 다른 것으로 변경하면 어떻게됩니까? 대신 "시도"로 변경하십시오. 여전히 동일한 오류입니까? – rain01

+0

동일한 오류가 '시도'로 변경되었습니다. –

+0

세션이 아닌 쿠키를 사용하는 것이 좋습니다. n 로그인 시도 횟수 후 captcha를 표시하려면 세션을 사용하는 경우 –

답변

1

난 당신이 CHttpSession 대신 내 YII 프로젝트 중 하나로 $_SESSION을 사용한 적이

$session=new CHttpSession; 
$session->open(); 

$session['attempts'] = 0; 
$session['sleep'] = 0; 
$session['ip']=$this->get_ip_address(); 

$_SESSION의 사용한다고 생각합니다.