2011-04-29 153 views
2

我在CakePHP中忙於一段時間的登錄系統。

我有一個網站,人們可以加入並登錄。 我想要的是,如果用戶第一次登錄,用戶必須執行必須完成的信息的某些步驟。


我正在考慮在我的數據庫中創建一個活動的字段1或0. 當用戶繼續執行這些步驟時,配置文件已被激活,並且從不顯示第一次登錄頁面。

如歡迎「用戶」, 我的個人資料信息 - >與我們聯繫 - >有關應用程序
信息 - >激活賬戶

任何人都可以給我一些片段來做到這一點。

非常感謝!CakePHP首次登錄

<?php 

    class UsersController extends AppController { 

     var $name = 'Users'; 

     function beforeFilter() { 
      parent::beforeFilter(); 

      // Rights for the admin users 
      $this->Auth->mapActions(
       array(
        'create' => array('admin_add'), 
        'read' => array('index', 'admin_index') 
       ) 
      ); 

      // Everybody can login 
      $this->Auth->allow(array('login')); 

      // Apply ucfirst (Capital) & strolower (small text) to the username 
      if (isset($this->data['User']['username'])) { 
       $this->data['User']['username'] = ucfirst(strtolower($this->data['User']['username'])); 
      } 

     } 

     function login() { 

      // Check if the user is logged in correctly, then update the date/time from this login 
      if ($this->Auth->User()) { 

       // Update the login date 
       $this->User->save(array(
        'id' => $this->Session->read('Auth.User.id'), 
        'last_login' => date('Y-m-d h:i:s') 
       )); 

       // Get the group name 
       $group = $this->User->Group->findById($this->Session->read('Auth.User.group_id')); 


       // Set the redirect if the user has logged in as Administrator 
       if ($group['Group']['name'] == 'Admins') { 
        $this->redirect(array('controller' => 'posts', 'action' => 'index')); 
       } 
      } 


      // Always redirect the user to the homepage 
    //  $this->redirect(array('controller' => '', 'action' => '')); 


      pr($this->Session->read('Auth')); 

     } 


     function logout() { 
      $this->redirect($this->Auth->logout()); 
     } 

     function admin_index() { 
      echo 'It Work's'; 
     } 

回答

2

當他們完成歡迎過程時使用活動字段。但是,您需要跟蹤流程的每個步驟。如果他們需要完成兩個過程並關閉他們的計算機,該怎麼辦?

我會有一張跟蹤進度的表格。每個步驟都會在新用戶完成時添加。當所有步驟完成時,更新USER表中記錄的ACTIVE字段(表示他們完成了所有步驟),然後從跟蹤它的表中刪除其進度信息。

用戶下一次登錄時,將看到他們已設置ACTIVE標誌,並跳過歡迎程序。但是,如果他們僅在中途完成,ACTIVE字段仍然會反映0,並且進度表會告訴您他們離開的位置。

0

是的,你可以在用戶表上創建一個字段..你可以在你的AppController上使用beforeFilter()方法來檢查用戶是否被連接並且激活字段被設置爲1或0.如果用戶不是激活,重定向到您的窗體或任何你需要做的..一旦一切正確改變活動領域爲1 ...就這樣吧

只需要注意beforeFilter()方法,你不必重定向用戶如果當前頁面是你激活表單的頁面..因爲它會創建一個無限循環的重定向

祝你好運!

+0

感謝您的詳細解釋!這真的有助於這個系統的開發。 我不知道從哪裏開始我的代碼。 我應該創建一個具有這些功能的新控制器嗎? 我創建了一個存儲每個步驟的新表。 然後將這些步驟鏈接到用戶表中的user_id 有沒有人創建此係統的代碼片段..或anny示例。 曼尼謝謝! – NDeveloper 2011-04-29 14:54:44

+0

有一個名爲AppController的主控制器http://book.cakephp.org/view/957/The-App-Controller,您可以使用它來放置所有控制器通用的代碼。如果你按照文檔上的Auth教程,你應該已經擁有了你自己的AppController和beforeFilter(),你只需要檢查用戶是否連接並且他的「激活」狀態。我不知道是否有一些片段或代碼來完成這個「步驟」的事情,看起來你需要編碼=)乾杯! – pleasedontbelong 2011-04-29 15:01:11