2011-11-23 71 views
0

我想通過phonegap在Android上實現一個基於Codeigniter的應用程序,除了使用坦克認證登錄/註銷外,所有工作都很好。在Android上使用Codeigniter和坦克認證在phonegap上

當提交登錄表單時,它會一直顯示一個對話框,顯示「完成操作使用」,並提供選擇瀏覽器的選項,而不是留在應用程序窗口中。

如果你選擇它再次打開登錄頁面瀏覽器窗口瀏覽器,但是如果應用程序重新啓動它於二

登錄我怎樣才能阻止這種跳轉到瀏覽器這樣的應用程序是無縫?我認爲這是坦克認證寫/銷燬cookie信息的時候。由於客戶端主機不支持子域,因此它將在根目錄下的/ android子文件夾中運行。

這是坦克auth登錄代碼。請注意,'家'是默認的控制器。

編輯:我實際上不需要接受'完成操作使用'對話框 - 如果我只是點擊回來並重新啓動它登錄的應用程序!希望我能知道正在做一個對話框彈出,實際上,我非常深刻的印象,PhoneGap的已經成功地環繞一個完整的CI網站與所有的認證......

function login() 
    { 
     if ($this->tank_auth->is_logged_in()) {         // logged in 
      redirect('home'); 
     } elseif ($this->tank_auth->is_logged_in(FALSE)) {      // logged in, not activated 
      redirect('/auth/send_again/'); 
     } else { 
      $data['login_by_username'] = ($this->config->item('login_by_username', 'tank_auth') AND 
        $this->config->item('use_username', 'tank_auth')); 
      $data['login_by_email'] = $this->config->item('login_by_email', 'tank_auth'); 

      $this->form_validation->set_rules('login', 'Login', 'trim|required|xss_clean'); 
      $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean'); 
      $this->form_validation->set_rules('remember', 'Remember me', 'integer'); 

      // Get login for counting attempts to login 
      if ($this->config->item('login_count_attempts', 'tank_auth') AND 
        ($login = $this->input->post('login'))) { 
       $login = $this->security->xss_clean($login); 
      } else { 
       $login = ''; 
      } 

      $data['use_recaptcha'] = $this->config->item('use_recaptcha', 'tank_auth'); 
      if ($this->tank_auth->is_max_login_attempts_exceeded($login)) { 
       if ($data['use_recaptcha']) 
        $this->form_validation->set_rules('recaptcha_response_field', 'Confirmation Code', 'trim|xss_clean|required|callback__check_recaptcha'); 
       else 
        $this->form_validation->set_rules('captcha', 'Confirmation Code', 'trim|xss_clean|required|callback__check_captcha'); 
      } 
      $data['errors'] = array(); 

      if ($this->form_validation->run()) {        // validation ok 
       if ($this->tank_auth->login(
         $this->form_validation->set_value('login'), 
         $this->form_validation->set_value('password'), 
         $this->form_validation->set_value('remember'), 
         $data['login_by_username'], 
         $data['login_by_email'])) { // success 

         $this->load->library('user_agent'); 
         redirect('home'); // Adds this onto /android/ 

       } else { 
        $errors = $this->tank_auth->get_error_message(); 
        if (isset($errors['banned'])) {        // banned user 
         $this->_show_message($this->lang->line('auth_message_banned').' '.$errors['banned']); 

        } elseif (isset($errors['not_activated'])) {    // not activated user 
         redirect('/auth/send_again/'); 

        } else {             // fail 
         foreach ($errors as $k => $v) $data['errors'][$k] = $this->lang->line($v); 
        } 
      } 
     } 
     $data['show_captcha'] = FALSE; 
     if ($this->tank_auth->is_max_login_attempts_exceeded($login)) { 
      $data['show_captcha'] = TRUE; 
      if ($data['use_recaptcha']) { 
       $data['recaptcha_html'] = $this->_create_recaptcha(); 
      } else { 
       $data['captcha_html'] = $this->_create_captcha(); 
      } 
     } 
     $this->load->view('view_header'); 
     $this->load->view('auth/login_form', $data); 
    } 
} 

回答

1

排序它自己 - 我增加了以下內容的/src文件夾中的Java活動的文件,只是super.loadUrl前行:

super.setBooleanProperty("loadInWebView", true); 

這使得所有鏈接在網頁視圖打開,即在應用程序中。很適合這樣簡單的事情。

花5小時拖網輪,但最終到了那裏...:/

相關問題