从CSV创建登录页面

时间:2017-02-08 17:09:36

标签: php html csv

我正在尝试为我的网站创建一个登录页面。我已将其设置为用户可以创建一个帐户,这些凭据将保存到我的ftp保存的csv中。 (所有HTML和CSS都有用)我希望系统工作如下:

1.从登录页面,用户输入凭据 2.搜索CSV,当找到电子邮件时,将输入的密码与CSV中的相应密码进行比较 3.如果匹配则打开另一页/如果它们不匹配则显示错误。
这是CSV:

测试@ gmail.com,密码1
Test2@gmail.com.password2

这是写入CSV的php:

<?php
$filename = $_POST['filename'];
foreach($_POST as $name => $value)
{
IF ($value != "Submit" and $value !=$filename)
{
$messagedisplay = $messagedisplay . $name. ": " . $value . "<BR>";
$filedata = $filedata . $value . ",";
}
}
$filedata = rtrim($filedata,",");
$filedata = $filedata . PHP_EOL;
$fs = fopen($filename,a);
fwrite($fs,$filedata);
fclose($fs);
$messagedisplay = "Your account has been created, please return to the main website and login.";
print $messagedisplay;
?>


有关如何检查CSV以查看a)电子邮件是否存在于CSV中以及b)检查密码是否匹配以及随后重定向到另一页的任何想法。感谢。

1 个答案:

答案 0 :(得分:0)

在你的情况下,你可以将csv啜饮成一个数组。然后它就像迭代数组一样简单,直到找到匹配为止。

<?php
$credentials = [
    ['foo', 'jubblies'],
    ['bar', 'jangles']
];

$check_credentials = function($username, $password) use ($credentials) {
    foreach($credentials as $credential)
        if($credential[0] == $username && $credential[1] == $password)
            return true;

    return false;
};

var_dump($check_credentials('foo', 'jiblets'));
var_dump($check_credentials('foo', 'jubblies'));
var_dump($check_credentials('ace', 'detective'));

输出

boolean false
boolean true
boolean false

将您的凭证从csv文件读入数组(类似于上面的格式)可以完成如下:

function get_credentials_from_file($path) {
    $fp = fopen($path, 'r');
    while ($line = fgetcsv($fp)) {
        $lines[] = $line;
    }
    fclose($fp);

    return $lines;
}

$credentials = get_credentials_from_file('/tmp/file.csv');

另请参阅fputcsv,了解csv写作。

存储用户数据时要小心。

如果您最终读取和写入csv或文本文件,则必须管理文件锁等。使用数据库可能更容易。

请参阅:Php&#39; password_hashpassword_verify以避免存储纯文本密码。