Здравствуйте, при регистрации необходимо сделать проверку на пользователя. Если в базе данных уже есть такое же имя, что вводит пользователь для регистрации, то должна выдаваться ошибка.
Для того что бы сделать проверку я ее написала, таким образом, что сначала идет проверка на существует ли такой пользователь в б.д, если нет то регистрируем пользователя. Если такое имя есть то выводит ошибку. Но все равно ошибку не выводит. Подскажите, пожалуйста, где я допустила ошибку.
UserModel.php<?php
require 'DB.php';
class UserModel {
private $name;
private $email;
private $pass;
private $_db = null;
public function __construct() {
$this->_db = DB::getInstence();
}
public function setData($name, $email, $pass) {
$this->name = $name;
$this->email = $email;
$this->pass = $pass;
}
public function validForm() {
if(strlen($this->name) < 3 )
return "Имя слишком короткое";
else if(strlen($this->email) < 3)
return "Email слишком короткий";
else if(strlen($this->pass) < 3)
return "Пароль не менее 3 символов";
else
return "Верно";
}
public function addUser() {
$result = $this->_db->query("SELECT COUNT(`id`) AS `count` FROM `users` WHERE `name` = '$name'");
$user = $result->fetch(PDO::FETCH_ASSOC);
if($user['count'] != 0)
return 'Пользователь с таким логином существует';
else {
$sql = 'INSERT INTO users(name, email, pass) VALUES(:name, :email, :pass)';
$query = $this->_db->prepare($sql);
$pass = password_hash($this->pass, PASSWORD_DEFAULT);
$query->execute(['name' => $this->name, 'email' => $this->email, 'pass' => $pass]);
$this->setAuth($this->name);
}
}
}
UserController.php<?php
class User extends Controller {
public function reg() {
$data = [];
if(isset($_POST['name'])) {
$user = $this->model('UserModel');
$user->setData($_POST['name'], $_POST['email'], $_POST['pass']);
$isValid = $user->validForm();
if($isValid == "Верно")
$user->addUser();
else
$data['message'] = $isValid;
}
$this->view('user/reg', $data);
}
}