2014-03-27 32 views
0

我只是創建了登錄類,用於在用戶輸入他/她的主頁部分之後檢查有效用戶。但現在我需要有條件地更改用戶家中的目的地,無法在url重定向中附加切換大小寫。無法使用codeigniter中的回調重定向url

注:我覺得varibale不function.Plz正確地傳遞幫我

我的代碼如下:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

    class VerifyLogin extends CI_Controller { 

     function __construct() 
     { 
      parent::__construct(); 
      $this->load->model('userp','',TRUE); 
     } 

     function index($dest) 
     { 
      $this->load->view('header'); 
      //This method will have the credentials validation 
      $this->load->library('form_validation'); 
      $this->form_validation->set_rules('email', 'Email', 'trim|required|xss_clean'); 
      $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database'); 

      if($this->form_validation->run() == FALSE) 
      { 
       //Field validation failed. User redirected to login page 
       $data['msg'] = ""; 
       $this->load->view('login',$data); 
      } 

      $this->load->view('footer'); 
     } 

     function check_database() 
     { 
      //Field validation succeeded. Validate against database 
      $email = $this->input->post('email'); 
      //query the database 
      $password= $this->input->post('password'); 
      $result = $this->userp->login($email,$password); 

      if($result!==FALSE) 
      { 
       $sess_array = array(); 
       foreach($result as $row) 
       { 
        $sess_array = array(
         'id' => $row->id, 
         'username' =>$row->email, 
         'fname' =>$row->first_name, 
         'lname' =>$row->last_name, 
         'pic'=>$row->pic 
        ); 
        $this->session->set_userdata('logged_in',$sess_array); 
       } 

       switch($dest){ 
        case 'NULL':{ 
         redirect('home','refresh'); 
         break; 
        } 
        case 'part1':{ 
         redirect('subhome','refresh'); 
         break; 
        } 
        case 'part2':{ 
         redirect('subhome1','refresh');  
         break; 
        } 
        default :{ 
         redirect('mainhome','refresh'); 
         break; 
        } 
       } 
       return TRUE; 
      } 
      else 
      { 
       $data['msg'] = "Something Wrong Username/Password"; 
       $this->load->view('login',$data); 
       //return false; 
      } 
     } 
    }; 
?> 
+1

$ DEST在指數($ DEST)已宣告但尚未在check_database(),這就是你的交換機試圖使用$ DEST。 –

+0

如何通過檢查數據庫 – rbstack

+0

如果編輯config/routes.php並添加諸如$ route ['check_database /(:any)'] ='verifylogin/database_check/$ 1'之類的路由並將check_database()更改爲check_database ($ dest),無論你在URL中輸入的是什麼(:any),都將作爲$ dest傳遞給check_database。 –

回答

0

的問題是要傳遞$destindex()功能,但您正在嘗試在你的check_database()功能中使用它。因此,無論你想你的開關切換到索引功能,或者您想通過$destcheck_database()

function check_database($dest) 
{ 
    //You can use $dest in here 
} 

如果你想一個額外的參數傳遞給你的回調函數,你需要把它放在括號像

$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database[parameter]'); 

$this->form_validation->set_rules("password", "Password", "trim|required|xss_clean|callback_check_database[$parameter]"); 
+0

$ this-> form_validation-> set_rules('password','Password','trim | required | xss_clean | callback_check_database'); @Pattle我是新的codeigniter,我怎麼能通過dest回調 – rbstack

+0

@rbstack我已經通過回答更新瞭解釋如何傳遞一個額外的參數到你的回調函數 – Pattle