conn = $db; } // Метод для создания нового пользователя function create() { // Запрос для добавления нового пользователя в БД $query = "INSERT INTO " . $this->table_name . " SET firstname = :firstname, lastname = :lastname, email = :email, password = :password"; // Подготовка запроса $stmt = $this->conn->prepare($query); // Инъекция $this->firstname = htmlspecialchars(strip_tags($this->firstname)); $this->lastname = htmlspecialchars(strip_tags($this->lastname)); $this->email = htmlspecialchars(strip_tags($this->email)); $this->password = htmlspecialchars(strip_tags($this->password)); // Привязываем значения $stmt->bindParam(":firstname", $this->firstname); $stmt->bindParam(":lastname", $this->lastname); $stmt->bindParam(":email", $this->email); // Для защиты пароля // Хешируем пароль перед сохранением в базу данных $password_hash = password_hash($this->password, PASSWORD_BCRYPT); $stmt->bindParam(":password", $password_hash); // Выполняем запрос // Если выполнение успешно, то информация о пользователе будет сохранена в базе данных if ($stmt->execute()) { return true; } return false; } // Проверка, существует ли электронная почта в нашей базе данных function emailExists() { // Запрос, чтобы проверить, существует ли электронная почта $query = "SELECT id, firstname, lastname, password FROM " . $this->table_name . " WHERE email = :email limit 1 "; // Подготовка запроса $stmt = $this->conn->prepare($query); // Инъекция $this->email=htmlspecialchars(strip_tags($this->email)); // Привязываем значение e-mail // $stmt->bindParam("email", $this->email); // Выполняем запрос $stmt->execute(["email"=>$this->email]); // Получаем количество строк $num = $stmt->rowCount(); // Если электронная почта существует, // Присвоим значения свойствам объекта для легкого доступа и использования для php сессий if ($num > 0) { // Получаем значения $row = $stmt->fetch(PDO::FETCH_ASSOC); // Присвоим значения свойствам объекта $this->id = $row["id"]; $this->firstname = $row["firstname"]; $this->lastname = $row["lastname"]; $this->password = $row["password"]; // Вернём "true", потому что в базе данных существует электронная почта return ['result'=>true]; } // Вернём "false", если адрес электронной почты не существует в базе данных return ['result'=>false,'error'=>$this->conn->errorInfo()]; } // Здесь будет метод update() // Обновить запись пользователя public function update() { // Если в HTML-форме был введен пароль (необходимо обновить пароль) $password_set=!empty($this->password) ? ", password = :password" : ""; // Если не введен пароль - не обновлять пароль $query = "UPDATE " . $this->table_name . " SET firstname = :firstname, lastname = :lastname, email = :email {$password_set} WHERE id = :id"; // Подготовка запроса $stmt = $this->conn->prepare($query); // Инъекция (очистка) $this->firstname=htmlspecialchars(strip_tags($this->firstname)); $this->lastname=htmlspecialchars(strip_tags($this->lastname)); $this->email=htmlspecialchars(strip_tags($this->email)); // Привязываем значения с HTML формы $stmt->bindParam(":firstname", $this->firstname); $stmt->bindParam(":lastname", $this->lastname); $stmt->bindParam(":email", $this->email); // Метод password_hash () для защиты пароля пользователя в базе данных if(!empty($this->password)){ $this->password=htmlspecialchars(strip_tags($this->password)); $password_hash = password_hash($this->password, PASSWORD_BCRYPT); $stmt->bindParam(":password", $password_hash); } // Уникальный идентификатор записи для редактирования $stmt->bindParam(":id", $this->id); // Если выполнение успешно, то информация о пользователе будет сохранена в базе данных if($stmt->execute()) { return true; } return false; } }