2012-09-24 7 views
1

비밀 번호를 잘못 입력하지 못했지만 시도 할 방법이 확실하지 않을 때 화면에 보안 문자 팝업을 표시하려고합니다. 나는 이것에 관해 꽤 많은 페이지를 발견했다. 그러나 그들 모두는 템플릿을 사용하는 것을 포함한다. 그리고 그 페이지의 어느 것도 내가 나의 모양에 넣어야하는 것을 설명하지 않는다.사용자 정의 PHPBB 로그인 페이지가있는 보안 문자

여기까지가 있습니다.

보조 노트에
define('IN_PHPBB', true); 
    global $auth, $db, $cache, $config, $user, $phpbb_root_path, $phpEx, $template; 
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '../main/'; 
    $phpEx = substr(strrchr(__FILE__, '.'), 1); 
    include($phpbb_root_path . 'common.' . $phpEx); 

    $user->session_begin(); 
    $auth->acl($user->data); 

    $remember = $remember==1?true:false; 
    $result = $auth->login($username, $password, $remember); 

    if ($result['status'] == LOGIN_SUCCESS){ 
     return "LOGIN_SUCCESS"; 
     //Launch captcha 
    }else{ 
     if($result['status']==LOGIN_ERROR_ATTEMPTS){ 
      return "LOGIN_ERROR_ATTEMPTS"; 
     } 
     if($result['status'] == LOGIN_ERROR_EXTERNAL_AUTH){ 
      return "No profile exists."; 
     }elseif($result['status'] == LOGIN_BREAK){ 
      return "Failed to create session."; 
     }elseif($result['status'] == LOGIN_ERROR_PASSWORD){ 
      return "Incorrect Password."; 
     }elseif($result['status'] == LOGIN_ERROR_USERNAME){ 
      return "Invalid Username."; 
     }elseif($result['status'] == LOGIN_ERROR_PASSWORD_CONVERT){ 
      return "Internal error, failed to convert password."; 
     }elseif($result['status'] == LOGIN_ERROR_ACTIVE){ 
      return "User is inactive."; 
     } 
    } 
+0

, 왜 스위치, 케이스를 사용하는 대신 많은 ELSEIF 년대의 아프게하지? –

+0

그래, 나도 그 계획을 바꿨지 만,이 captcha는 나에게 더 큰 이슈이다. –

답변

1
define('IN_PHPBB', true); 
global $auth, $db, $cache, $config, $user, $phpbb_root_path, $phpEx, $template; 
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './'; 
$phpEx = substr(strrchr(__FILE__, '.'), 1); 
include($phpbb_root_path . 'common.' . $phpEx); 
if (!class_exists('phpbb_captcha_factory')) 
{ 
    include($phpbb_root_path . 'includes/captcha/captcha_factory.' . $phpEx); 
} 
$user->session_begin(); 
$auth->acl($user->data); 
$username = isset($_POST['username']) ? $_POST['username'] : ''; 
$password = isset($_POST['password']) ? $_POST['password'] : ''; 
$remember = isset($_POST['remember']) ? $_POST['remember'] : '' ; 
$remember = $remember==1?true:false; 
$result = $auth->login($username, $password, $remember); 
$err = ''; 

    switch ($result['status']) 
    { 
     case LOGIN_SUCCESS: 
      $err .= 'Welcome ' . $user->data['username']; 
     break; 

     case LOGIN_ERROR_EXTERNAL_AUTH: 
      $err .= 'No profile exists'; 
     break; 

     case LOGIN_ERROR_ATTEMPTS: 
      $err .= '<script type="text/javascript" src="http://www.google.com/recaptcha/api/challenge?k=your_public_key">' . "/n" 
      . '</script>' . "/n" 
      . '<noscript>' . "/n" 
      . '<iframe src="http://www.google.com/recaptcha/api/noscript?k=your_public_key" height="300" width="500" frameborder="0"></iframe><br>' . "/n" 
      . '<textarea name="recaptcha_challenge_field" rows="3" cols="40">' . "/n" 
      . ' </textarea>' . "/n" 
      . ' <input type="hidden" name="recaptcha_response_field" value="manual_challenge">' . "/n" 
      . '</noscript>'; 
      $err .= 'LOGIN_ERROR_ATTEMPTS'; 
     break; 

     case LOGIN_ERROR_PASSWORD_CONVERT: 
      $err .= 'Internal error, failed to convert password.'; 
     break; 

     case LOGIN_BREAK: 
      $err .= "Failed to create session."; 
     break; 

     case LOGIN_ERROR_PASSWORD: 
      $err .= "Incorrect Password."; 
     break; 

     case LOGIN_ERROR_USERNAME: 
      $err .= "Invalid Username."; 
     break; 

     case LOGIN_ERROR_ACTIVE: 
      $err .= "User is inactive."; 
     break; 
    } 
return $err; 
+1

나는 전에 그런 사람이 있었지만 $ captcha-> get_template()은 false를 반환하거나 'captcha_default.html'내가 어떻게 할 수 있는지 확신하지 못했다. 그것을 내 양식으로 구현 하시겠습니까? 그 'captcha_default.html'페이지가 무엇인지 확실하지 않습니다. 입력 필드의 이름은 무엇입니까? 그 코드는 captcha 텍스트에 대한 입력을 처리하지 않습니다. –

+1

captcha를 포함하는 유일한 방법은 phpbb 템플릿을 사용하는 것입니다. 또는 자신의 captcha를 항상 사용할 수도 있고, 아래에 표시된 것과 동일한 방법으로 다른 것을 수행 할 수도 있습니다. 'login_box (request_var ('redirect', "index. $ phpEx")));' 을 사용하거나'../ main/ucp.php? mode = login & redirect = myredirect'에 게시하시오 –

+0

그래, 정말 고마워. ! –