我正在尝试为我的网站创建一个登录页面。我已将其设置为用户可以创建一个帐户,这些凭据将保存到我的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)检查密码是否匹配以及随后重定向到另一页的任何想法。感谢。
答案 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_hash
和password_verify
以避免存储纯文本密码。