Проблема с передачей данных в базу данных
Здраствуйте, коллеги. Только изучаю разработку и столкнулась с проблемой. Делала по примеру, по которому все работало ранее, но теперь возникают ошибки. Данные не передаются в БД.
Суть задания: нужно создать регистрацию на главной странице на php c MVC и ООП.
Буду благодарна, если подскажите в чем дело.
Файл views/home/index.php
<div class="main">
<div class="container main">
<h1>Сокра.тим</h1>
<p>Вам нужно сократить ссылку? Прежде чем это сделать зарегистрируйтесь на сайте</p>
<form action="/" method="post" class="form-control">
<input type="email" name="email" placeholder="Введите email" value="<?=$_POST['email']?>"><br>
<input type="text" name="login" placeholder="Введите логин" value="<?=$_POST['login']?>"><br>
<input type="password" name="pass" placeholder="Введите пароль" value="<?=$_POST['pass']?>">
<div class="error"><?=$data['message']?></div>
<button class="btn" id="send">Зарегистрироваться</button>
<p>Есть аккаунт? Тогда вы можете <a href="/user/auth">авторизоваться</a></p>
</form>
</div>
<?php print_r($_POST['email']); ?>
</div>
Файл controller/User.php
<?php
class User extends Controller {
public function reg() {
$data = [];
if(isset($_POST['email'])) {
$user = $this->model('UserModel');
$user->setData($_POST['email'], $_POST['login'], $_POST['pass']);
$isValid = $user->validForm();
if($isValid == "Верно"){
$user->addUser();
print_r($_POST['email']);}
else
$data['message'] = $isValid;
}
$this->view('/', $data);
}
Файл models/DB.php
<?php
class DB {
private static $_db = null;
public static function getInstence() {
if(self::$_db == null)
self::$_db = new PDO('mysql:host=localhost;dbname=diplome;', 'root', 'root');
return self::$_db;
}
private function __construct() {}
private function __clone() {}
private function __wakeup() {}
}
Файл models/UserModel.php
require 'DB.php';
class UserModel {
private $email;
private $login;
private $pass;
private $_db = null;
public function __construct() {
$this->_db = DB::getInstence();
}
public function setData($email, $login, $pass) {
$this->email = $email;
$this->login = $login;
$this->pass = $pass;
}
public function validForm() {
$result = $this->_db->query("SELECT * FROM `users` WHERE `login` = ' $this->login'");
//$result = $this->_db->query("SELECT COUNT(`id`) AS `count` FROM `users` WHERE `name` = ". $this->_db->quote($this->login) );
$user = $result->fetch(PDO::FETCH_ASSOC);
if(strlen($this->email) < 3)
return "Email слишком короткий";
else if($user['count'] != 0)
return "Пользователь с таким логином уже существует";
else if(strlen($this->pass) < 3)
return "Пароль не менее 3 символов";
else
return "Верно";
}
public function addUser() {
$sql = 'INSERT INTO `users`(email, login, pass) VALUES(:email, :login, :pass)';
$query = $this->_db->prepare($sql);
$pass = password_hash($this->pass, PASSWORD_DEFAULT);
$query->execute(['email' => $this->email, 'login' => $this->login, 'pass' => $pass]);
$this->setAuth($this->login);
}
public function getUser() {
$login = $_COOKIE['login'];
$result = $this->_db->query("SELECT * FROM `users` WHERE `login` = '$this->login'");
return $result->fetch(PDO::FETCH_ASSOC);
}
Источник: Stack Overflow на русском