多维数组方法的功能登录检查


multidimensional array method for function login check

我试图使用多维数组方法做登录检查。

例如

下面有一个数组:

$multiuser['master'][0] = 'boss'=>'123456';
$multiuser['master'][1] = 'computer' => '636363';
$multiuser['admin'][0] = 'admin1' => '382382';
$multiuser['admin'][1] = 'admin2' => '323243';

我如何检查用户,如果他们输入他们的用户名为'admin1'或'boss'在这个数组中存在并且密码与用户名'admin1'/'boss'匹配?我还想知道它的用户群。如果老板的用户名和密码匹配。如何找到master下的用户组

这不是处理登录的好方法。

1)数组的结构使得很难找到用户。当然,您可以扫描$multiuser中的每个数组并尝试找到所需的用户名,但是当您尝试添加组时,这将变得越来越困难。

您应该使查找用户和从那里查找组变得更容易。如:

$users = array ('boss' => array(
                          'hash'  => 'password_hash',
                          'group' => 'master'),
                'admin1' => array(
                          'hash'  => 'password_hash',
                          'group' => 'admin'), 
                // and so forth
               );

现在如果你想找到$user,你只需要找$users[$user],如果它是有定义的,它就在那里。然后你可以从$users[$user]['group']中得到基团,以此类推。

2)您使用的是明文密码。密码不应该以明文形式存储,但至少应该进行散列和腌制。这是一个很长的话题,但这里有一个起点:

密码散列(PHP Security Consortium)

3)无论如何,您应该完全放弃在PHP中存储登录信息的想法,而使用数据库。将用户信息存储在平面文件(不好)或PHP文件(更糟)中会使以后的管理变得非常困难。

这可能看起来不是什么大事,因为你有几个用户,但它非常混乱。

我在我的许多站点中使用这种方法:

$accounts[]=array("username" => "guest123","password" => "password123");
$accounts[]=array("username" => "jon","password" => "password123");
$accounts[]=array("username" => "bob123","password" => "password123");