2011-12-13 48 views
0

我目前正在編寫一個PHP登錄腳本,並試圖儘可能保證它的安全性,目前腳本只是作爲一個感興趣的問題而不是實際應用。我碰到了一個我無法克服的輕微問題,儘管如此,更多的方式是最好的,而不是實際的問題。從安全角度來看,我不認爲它很重要,但我只是想知道哪個是最好的方法,以及爲什麼。在PHP類中設置很多變量

爲了使這個類能夠工作,需要設置好幾個變量,例如持有用戶登錄詳細信息的表格,用戶名和密碼的字段,要使用的加密或散列類型以及不少其他人。你如何建議是設置這些的最佳方式?目前,我可以考慮將它們設置在類構造函數參數中,但是在類的開始處需要設置或設置它們作爲公共靜態變量的列表相當長。你認爲哪一個最好,爲什麼我能理解它背後的推理。如果你對我的兩個人有更好的想法,我也希望聽到他們的意見。

對不起,如果這已被問及,我已經嘗試過搜索,但沒有發現太多;很難甚至知道要搜索什麼。

回答

0

一個建議是將參數放入單個數組中。像

<?php 
class Example 
{ 
    # ...code here... 

    public function __construct($args) 
    { 
     foreach($args as $key => $val) 
     { 
      switch($key) 
      { 
      case 'foo': 
       # ...code here... 
       break; 
      case 'bar': 
       # ...code here... 
       break; 
      default: 
       # discard irrelevent elements 
      } 
     } 
    } 

    # ...code here... 
} 
+0

我喜歡這個想法,使用數組會更清晰,我可以將它傳遞給構造函數並對每個變量執行一些驗證檢查。 –

0

當你說表時,你是否打算擁有一個用戶信息數據庫?驗證憑證集後,您可以將唯一標識傳遞給構造函數,並允許在通過查詢數據庫進行實例化時設置內部類屬性。或者,寫很多setter並根據需要構建每個對象。

有關加密和類似設置的一件事情,他們甚至會不同,每個用戶?你能否考慮在用戶類的所有實例的設置變量中設置它們,而不是爲每個對象設置它們。

+0

那麼這個類將連接到的表是持有用戶憑證的表,這裏設置變量的目的是讓這個類知道哪些表持有用戶憑證以及哪些字段包含他們的用戶名和密碼。我想我試圖讓這是一個自包含的泛型類,可以在多個站點上使用,如果我要在項目中使用它。我希望能回答你的問題。 您的權利使用的加密可能會保持所有用戶相同,這是一個很好的建議。 –