Проблема с передачей данных в базу данных

Рейтинг: 0Ответов: 0Опубликовано: 06.06.2023

Здраствуйте, коллеги. Только изучаю разработку и столкнулась с проблемой. Делала по примеру, по которому все работало ранее, но теперь возникают ошибки. Данные не передаются в БД.

Суть задания: нужно создать регистрацию на главной странице на 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);
        }

Ответы

Ответов пока нет.