2011-07-29 105 views
0

我和我的一個朋友正在開發一些網站,我們需要兩個都可以登錄的自定義管理面板。2個管理員的登錄區域

 $username=array(); 
      $pass=array(); 
      $username[0]='user1'; 
      $username[1]='user2'; 
      $pass[0]='pass1'; 
      $pass[1]='pass2'; 

      if (isset($_POST['password']) && isset($_POST['userName'])) { 
if($_POST['password']==$pass[0] && $_POST['userName']==$username[0] 
|| $_POST['password']==$pass[1] && $_POST['userName']==$username[1]) 
       { 
        if (!session_id()) 
         session_start(); 
         $_SESSION['logon'] = true; 
         $_SESSION['userName'] = $userName; 
         header('Location: admin.php'); 
         die(); 
       } 
      } 

我敢肯定有一些更好的方式登錄2人,這段代碼是否安全,足夠好用於管理員登錄?我不想將4個變量放在數據庫中,因此將這些變量放在localhost/server之外的txt文件中並使用include是個好主意?謝謝。

回答

1

簡單的用戶名和密碼存儲在一個這樣的數組:

$users = array('user1' => 'pass1', 'user2' => 'pass2'); 
if(array_key_exists($_POST['userName'], $users)) 
{ 
    if($users[$_POST['userName']] == $_POST['password']) 
    { 
     // Username and password correct 
    } 
    else 
    { 
     // Password incorrect 
    } 
} 
else 
{ 
    // Username incorrect 
} 

但是我想這些東西存儲在數據庫中。

+0

如果兩個後變量都是空白的,這肯定不會達到期望的結果? – symcbean

+0

由於數組中沒有空鍵,並且沒有空值的鍵,所以不應該有任何問題。 – Sylence

+0

試試吧。 「」 === 「」 – symcbean

1

如果您擔心安全問題,那麼您不應該在源文件或外部文件中以純文本格式輸入密碼。更好的方法是散列密碼並存儲在數據庫中。

+0

謝謝。以及如何創建2人登錄,而不使用這個巨大的如果運算符 – George