我正在构建基于会话的flatfile登录身份验证。我过去只使用过mysql和mysqli,所以部分是新的。
到目前为止,我没有错误,但我需要数组部分的帮助。
如果我将静态用户凭据格式化为完全相同的格式,它会让我很好。数组当前从userinfo.csv文件输出的方式对我来说是正确的,但不进行身份验证!输出如下:
'user@jason.com'=>'PW123',
'user2@jason.com'=>'ABC123',
userinfo.csv文件如下所示:
user@jason.com,PW123
user2@jason.com,ABC123
以下是代码:
session_start();
$handle = fopen("userinfo.csv", "r");
while (($data = fgetcsv($handle)) !== FALSE) {
$userinfo = array("'" . $data['0'] . "'=>'" . $data['1'] ."',\r\n");
}
fclose($handle);
$errors = '';
if(isset($_POST['username'])) {
if($userinfo[$_POST['username']] == ($_POST['password'])) {
$_SESSION['username'] = $_POST['username'];
header('Location: accounts/');
} else {
//Invalid Login
$errors .= "Username or password incorrect!";
}
}
if(isset($_GET['logout'])) {
$_SESSION['username'] = '';
header('Location: ' . $_SERVER['PHP_SELF']);
}
我哪里错了?
注意: 一旦我弄清楚数组的问题,我会加密密码。目前是纯文本。
我知道随着我添加更多用户,登录过程会越来越慢。但是最多只有40个用户,所以这不是问题。
将在离线内联网中实施。
我知道mysqli是完美的,但不是我的电话。销售经理想要使用csv文件管理代表。
请帮帮我。 提前谢谢。
答案 0 :(得分:1)
您正在浏览文本文件并在每行中替换变量$userinfo
。
您真正想要的是存储数组中的每个条目。
$handle = fopen("userinfo.csv", "r");
$userinfo = array();
while (($data = fgetcsv($handle)) !== FALSE) {
$userinfo[$data[0]] = $data[1];
}
fclose($handle);
无需过度复杂化;)