2013-03-08 131 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