username = trim($username); $this->password = trim($password); $this->conn = $conn; } public function checkUsername() { switch(true) { case empty($this->username): $this->error = "Please fill out all of the fields"; break; case preg_match("/[^a-z0-9 ]/i", $this->username): $this->error = "Username cannot have any special characters."; break; case strlen($this->username) > 16: $this->error = "Username cannot be longer than 16 characters."; break; case strlen($this->username) < 3: $this->error = "Your username cannot be shorter than 3 characters."; break; default: $stmt = $this->conn->prepare("SELECT username FROM accounts WHERE username = :username"); $stmt->bindParam(":username", $this->username); $stmt->execute(); if ($stmt->rowCount() > 0) $this->error = "Username has been already taken."; } return $this->error; } public function checkPassword($passwordConfirm) { if (empty($this->password)) { $this->error = "Please fill out all of the fields."; } else { if ($this->password != $passwordConfirm) $this->error = "Passwords don't match."; } return $this->error; } public function insertUser() { $hashed_password = password_hash($this->password, PASSWORD_BCRYPT); $stmt = $this->conn->prepare("INSERT INTO accounts (username, password) VALUES (:username, :password)"); $stmt->bindParam(":username", $this->username); $stmt->bindParam(":password", $hashed_password); $stmt->execute(); session_regenerate_id(true); $_SESSION["user"] = $this->username; return true; } } ?>