构建PHP会话auth flatfile - auth数组

时间:2018-03-21 18:40:47

标签: php arrays

我正在构建基于会话的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文件管理代表。

请帮帮我。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

您正在浏览文本文件并在每行中替换变量$userinfo

您真正想要的是存储数组中的每个条目。

$handle = fopen("userinfo.csv", "r");
$userinfo = array();
while (($data = fgetcsv($handle)) !== FALSE) {    
    $userinfo[$data[0]] = $data[1];
}
fclose($handle);

无需过度复杂化;)