IS_VALID_USER = true; $this->id = $uid; } } static function getUser($username, $password) { $uid = file_get_contents('database/name/'.strtolower($username)); if ($uid == false) return null; $user = new User($uid); $hashedPassword = md5(md5($password).$username); if ($user->getPassword() === $hashedPassword) return $user; return null; } function isUser() { return $this->IS_VALID_USER; } function getID() { if ($this->isUser()) return $this->id; return null; } function getName() { if ($this->isUser()) return file_get_contents('database/'.User::PATH.'/'.$this->id.'/name'); return null; } function getPassword() { if ($this->isUser()) return file_get_contents('database/'.User::PATH.'/'.$this->id.'/password'); return null; } function getJoinDate() { if ($this->isUser()) return file_get_contents('database/'.User::PATH.'/'.$this->id.'/joindate'); return null; } function getLastActive() { if ($this->isUser()) return file_get_contents('database/'.User::PATH.'/'.$this->id.'/lastactive'); return null; } private static function isValid($username, $password) { if (preg_match('/^[\w\d\s~!@#\^\*\(\)\-\+\{\}\[\]\.]{4,16}$/', $username) == 0) return User::USERNAME_INVALID; if (strlen($username) < User::NAME_MIN_LENGTH) return User::USERNAME_TOO_SHORT; if (strlen($username) > User::NAME_MAX_LENGTH) return User::USERNAME_TOO_LONG; if (strlen($password) < User::PWD_MIN_LENGTH) return User::PASSWORD_TOO_SHORT; if (strlen($password) > User::PWD_MAX_LENGTH) return User::PASSWORD_TOO_LONG; if (User::isExists($username)) return User::USER_EXISTS; return true; } function postComment(Topic $topic, $comment) { $com = new String($comment); Comment::createComment($topic, $com, $this); } function createTopic(Category $cat, $title, $content) { $tit = new String($title); $cont = new String($content); return Topic::createTopic($cat, $tit, $cont, $this); } private static function isExists($username) { return file_exists('database/name/'.strtolower($username)); } static function register($username, $password) { $valid = User::isValid($username, $password); if ($valid !== true) return $valid; $joindate = time(); $lastactive = time(); $lowerUname = strtolower($username); $hashedPass = md5(md5($password).$username); $uid = count(scandir('database/'.User::PATH.'/')) + 1; mkdir('database/'.User::PATH.'/'.$uid); //Ghi thông tin user vào database Functional::writeFile('database/'.User::PATH.'/'.$uid.'/username', $username, 'w'); //Ghi user name Functional::writeFile('database/'.User::PATH.'/'.$uid.'/password', $hashedPass, 'w'); //Ghi password Functional::writeFile('database/'.User::PATH.'/'.$uid.'/joindate', $joindate, 'w'); //Ghi join date Functional::writeFile('database/'.User::PATH.'/'.$uid.'/lastactive', $lastactive, 'w'); //Ghi last active //Ánh xạ tên người dùng đến id người dùng Functional::writeFile('database/name/'.$lowerUname, $uid, 'w'); return User::REGISTER_SUCCESS; } function login() { //Tạo cookie hoặc session } function logout() { //Xóa cookie hoặc session } function setLastActive($time) { if ($this->IS_VALID_USER) Functional::writeFile('database/'.User::PATH.'/'.$this->id.'lastactive', $time, 'w'); } } ?>