2013-03-08 29 views
1

我有有一個用戶名和密碼下面的PHP腳本:在PHP中使用數組來比較用戶名/密碼

$Username = 'user1'; 
$Password = 'pass1'; 

/******************************************************************************/ 
if (isset($_POST['submitform'])){ 

    // Clean up the input values 
    foreach($_POST as $key => $value) { 
     $_POST[$key] = stripslashes($_POST[$key]); 
     $_POST[$key] = htmlspecialchars(strip_tags($_POST[$key])); 
    } 
    $user = isset($_POST['user']) ? $_POST['user'] : ''; 
    $pass = isset($_POST['pass']) ? $_POST['pass'] : ''; 
    $report = $_POST['typereport']; 

    if ($pass != $Password || $user != $Username) { 
     showForm("Wrong Username/Password"); 
     exit();  
    } 
} else { 
    showForm(); 
    exit(); 
} 

我想使腳本更強勁,這意味着我想有其他的用戶名/密碼,以便多個用戶可以登錄(想爲跟蹤目的)

那麼,如何修改劇本,所以我可以使用$Username$Password如下:

$Username=array("user1","user2","user3"); 
$Password=array("pass1","pass2","pass3"); 

因此,腳本將始終與正確的用戶名和密碼匹配,並允許我有多個用戶?

+1

出於好奇......爲什麼你不使用數據庫? – 2013-03-08 17:41:22

+0

使用PHP,因爲我已經有了它,所以試圖讓它更強大。在SQL版本上工作,但試圖決定使用PDO和mysqli,並試圖使其注入sql注入證明。 – Si8 2013-03-08 17:42:22

+0

你想在數組中定義用戶名和密碼,而不是在數據庫中? – Ankit 2013-03-08 17:42:39

回答

8

我會使用數據庫。如果你必須硬編碼,我會使用一個關聯數組:

<?php 
$logins = array(
    'username1' => 'password1', 
    'username2' => 'password2', 
    'username3' => 'password3', 
); 

$user = isset($_POST['user']) ? strtolower($_POST['user']) : ''; 
$pass = isset($_POST['pass']) ? $_POST['pass'] : ''; 

if (! isset($logins[$user]) or $logins[$user] != $pass) 
{ 
    showForm("Wrong Username/Password"); 
    exit(); 
} 
+1

用於關聯數組。我認爲PHP對數組中的尾隨逗號寬鬆,但並不是最好的。 – 2013-03-08 17:48:14

+0

如何讓用戶名不區分大小寫? – Si8 2013-03-08 17:49:15

+2

爲什麼它不是最好的?我同意,如果這是JavaScript ... – landons 2013-03-08 17:49:39