我正在尝试使用多维数组方法进行登录检查。
例如,我有下面的数组:
$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下。
发布于 2011-08-25 09:31:07
这不是处理登录的好方法。
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)您使用的似乎是明文密码。密码不应该以明文形式存储,但至少要进行散列和加盐。这是一个非常长的主题,但这里是一个起点:
Password Hashing (PHP Security Consortium)
3)无论如何,你应该完全抛弃在PHP中存储登录信息的想法,而使用数据库。将用户信息存储在平面文件(不好)或PHP文件(更糟)中将使以后的管理变得非常困难。
这可能看起来不是什么大事,因为你只有几个用户,但它非常混乱。
发布于 2011-08-25 21:59:12
我在我的许多网站中都使用这种方法:
$accounts[]=array("username" => "guest123","password" => "password123");
$accounts[]=array("username" => "jon","password" => "password123");
$accounts[]=array("username" => "bob123","password" => "password123");https://stackoverflow.com/questions/7184131
复制相似问题