2012-11-22 43 views
0

我已經爲使用非現場PayPal籃子銷售服裝和珠寶的公司製作了一個網站。它有一個非常基本的定製cms,目前只允許網站所有者自己登錄。登錄後,他可以添加/刪除/編輯產品,並在網站的首頁上管理基本新聞訂閱源。具有不同訪問級別的PHP/Codeigniter登錄系統

我現在想擴大網站,允許非管理員用戶註冊,併爲他們能夠做一些事情,如發佈新聞提要上的評論,也可以發佈在論壇等,但不希望他們訪問管理員可以執行的操作。

我最初的想法是使用類似以下內容:

public function validate_user() 
{ 
    $username = trim($this->input->post('username')); 
    $password = trim($this->input->post('password')); 
    $password_md5 = md5($password); 

    //query database searching for user 
    $this->db->where('username', $username); 
    $query = $this->db->get('users'); 

    //if user found in database, set session info 
    if ($query->num_rows() == 1) { 
     $result = $query->row(); 
     $output['username'] = TRUE; 

     //check if password correct 
     if ($result->password == $password_md5) { 
      $output['password'] = TRUE; 
      if ($result->admin) { 
       $admin = TRUE; 
      } else { 
       $admin = FALSE; 
      } 

      //set session data for user including validated status 
      $data = array(
       'id' => $result->id, 
       'username' => $result->username, 
       'fname' => $result->fname, 
       'lname' => $result->lname, 
       'admin' => $admin, 
       'validated' => TRUE 
      ); 
      $this->session->set_userdata($data); 
     } else { 
      $output['password'] = FALSE; 
     } 
    } else { 
     $output['username'] = FALSE; 
    } 
    return $output; 
} 

我很清楚的事實,存儲在會話的數據的布爾管理員狀態值可能是出於安全原因,一個壞主意,並可能被利用。對於我是否正朝着正確的方向前進,以及對於如何完成上述系統的建議,我將不勝感激。

在此先感謝。

+0

你爲什麼不安裝其中一個完全開發的電子商務系統? – 2012-11-22 23:09:00

+0

必須同意你最好使用現成的解決方案之一。在會話中存儲值不應該是一個問題,如果你正確地及時地銷燬這些值並且沒有用戶進行高級會話的方法。 –

+0

我很滿意網站在用戶管理產品的方式方面的運作方式,這個問題與我如何最好地區分不同類型的用戶並給予他們對網站的不同訪問級別有關。我不使用現成的解決方案的原因是我想學習如何自己做這些東西。 – Marc

回答

1
  • 使用笨表單驗證第一 - 確保你發送給數據庫
  • 之前有正確的數據,我認爲這將是值得打破了檢查用戶名到它自己的方法。 如果返回true,則調用檢查密碼等,這也會使得它稍後變得更加靈活。在XSS清潔形式輸出的習慣
  • 嘗試,並得到,只是把TRUE字段名稱

    $username = trim($this->input->post('username', TRUE)); 
    
  • 當你想要做這樣的事情通過電子郵件重置密碼
  • 後,檢查出離子驗證 https://github.com/benedmunds/CodeIgniter-Ion-Auth
+0

非常感謝。非常有用的信息:)。馬克。 – Marc

相關問題