【发布时间】:2015-12-08 10:49:13
【问题描述】:
我正在开发基于平面文件的登录会话。我将其修改为仅需要 MD5 密码。这是包含用户和密码MD5的txt文件。
admin:5f4dcc3b5aa765d61d8327deb882cf99
user1:7c6a180b36896a0a8c02787eeafb0e4c
user2:6cb75f652a9b52798eb6cf2201057c73
这是我的 php 代码的一部分。
/* Bool validateLogin() returns TRUE if login/password are valid. Returns FALSE and sets $this->errorMessage if invalid or other error. */
function validateLogin() {
$this->errorMessage = '';
$this->processLoginInput();
if($this->parseUserFile()) {
if( md5($_POST['password']) == $this->userData['password']) {
$_SESSION['loginId'] = $_POST['password'];
return(TRUE); }
else { $this->errorMessage = "Invalid user name and/or password"; }
}
else { $this->errorMessage = "Unable to read user login data file"; }
return(FALSE);
} // end validateLogin()
/* Mixed parseUserFile(). Returns number of users in userFile, else FALSE */
function parseUserFile() {
$this->userData = array();
if(is_readable($this->userFile)) {
$lines = file($this->userFile);
foreach($lines as $line) {
$line = trim($line);
if($line == "") { continue; }
$parts = preg_split('/:/', trim($line));
if(count($parts) >= 2) {
list($user, $password) = $parts;
$this->userData['password'] = $password; } } }
return((count($this->userData)) ? count($this->userData) : FALSE );
}// end parseUserFile()
我的问题:它只允许我使用列表 txt 中的最后一个密码访问。 第一个和第二个密码不起作用。
你能发现代码中的任何错误吗?
【问题讨论】:
-
你真的不应该使用 MD5 密码哈希,你真的应该使用 PHP 的 built-in functions 来处理密码安全。如果您使用的 PHP 版本低于 5.5,您可以使用
password_hash()compatibility pack。 -
嗨 jay :) 可以与 txt 数据库一起使用吗?我是 php 的菜鸟女孩,我不知道。我爱上了 txt 数据库 xxx
标签: php database text flat-file