2012-01-08 46 views
4

我正在開發CodeIgniter和MySQL中的應用程序。該應用包含用戶配置文件;我正在使用Tank Auth來註冊和驗證用戶。會話數據,CodeIgniter中的顯示配置文件URL(使用Tank Auth)

我已經設置了幾個用戶,現在想要查看每個用戶的配置文件。我需要知道:

1 - 如何將自定義會話數據添加到Tank Auth。我對代碼的外觀有了一個瞭解(http://codeigniter.com/user_guide/libraries/sessions.html),但我不確定代碼應該放在auth控制器中的哪個位置,這是相當廣泛的 - https://github.com/ilkon/Tank-Auth/blob/master/application/controllers/auth.php

2 - 如何將用戶數據傳遞到視圖。我已經設置了一個函數來檢索用戶數據(見下文),並希望將其傳遞給我的個人資料視圖 - 我認爲userdata(在代碼中)將代表自定義會話數據,其中將包括用戶的ID和用戶名,其中我需要的URL之一。

3 - URLs我希望網址看起來像這樣:http://example.com/users/3394http://example.com/users/fooy_foo。我知道我需要用CI URI路由來做一些事情,但我不確定如何將它與查詢中得到的結果聯繫起來。

下面是來自用戶控制器{

function index() 
    {  
    $id = $this->tank_auth->is_logged_in('id'); 

    $this->db->where('id', $id); 
    $q = $this->db->get('user'); 
    $data['userdata']=$q; 

    $this->load->view('user_view', $data); 
    } 
} 

回答

2
  1. 我不熟悉的坦克驗證碼,但我建議你檢查出official page坦克驗證。也許你會從關於圖書館的閱讀中得到更好的理解。 Here's這個教程展示瞭如何使用CodeIgniter設置Tank Auth。

  2. 通過查看您的代碼,從用戶控制器中,我看到您正在以正確的方式傳遞數據。你將它作爲一個數組傳遞給視圖。在你看來,數組元素將作爲一個變量可用。因此,要使用視圖中的數據,只需使用變量$userdata。如果您想添加更多數據以包含在視圖中,只需將其他元素添加到$data陣列中即可!

  3. 如果您創建名爲users的控制器,您將可以在www.example.com/users上找到它。然後,您可以編輯index函數以包含參數$uid,該參數將生成所需的網址:www.example.com/users/3394。在#3

例子:

比方說,你已經創建了users控制器。這將是你的索引()函數:

function index($userid) { 
    // You should probably have a model here that retrieves information 
    // about the user based on the userid 
    $data['user'] = $this->User_model->getUserInformation($userid); 
    $this->load->view('users', $data); 
} 

這是你可以設置你的索引函數的一種方法。變量$userid由www.example.com/users/ 定義。這就是urls在codeigniter中工作的方式。你可以閱讀更多關於here

+0

感謝您的回覆。我檢查了Tank Auth文檔,無法找到添加自定義會話數據的信息。但你能給我一個#3的例子嗎?你將如何包含$ uid參數來獲取URL? – chowwy 2012-01-08 04:11:37

+0

我用你的例子更新了我的答案! – 2012-01-08 04:20:10

+0

順便說一句。我找到了關於如何使用codeigniter設置tank auth的教程。這已經一年了,但可能對你的目的有用。 http://expertnotfound.wordpress.com/2011/01/20/setting-up-tank-auth-2/ – 2012-01-08 04:26:19

5

我猜Runar已經爲你回答了#2和#3。 對於#1,打開應用程序/庫/ Tank_auth.php和函數名稱登錄。你會看到這些代碼行:

$this->ci->session->set_userdata(array(
             'user_id'  => $user->id, 
             'username'  => $user->username, 
             'status'  => ($user->activated == 1) ? STATUS_ACTIVATED : STATUS_NOT_ACTIVATED, 
           )); 

set_userdata設置會話。您可以在此處添加更多要在會話中設置的變量。

+0

謝謝你。我只能接受一個答案,但我爲此贊成了你。我正在查看auth控制器,這就是爲什麼我沒有看到它。謝謝!! – chowwy 2012-01-08 19:50:01

+0

很高興可以幫助:) – Ninja 2012-01-08 20:02:40