Пытаюсь сделать регистрацию. Почему-то при отправке формы, запись добавляется не один раз, а три. Думаю проблема в роутере, так как он выводит сообщение три раза, но не могу понять в чем проблема. В контроллере просто создается объект Register, метод регистрации, и подключается шаблон.
И mysql почему то медленно грузится, из-за pdo, xdebug ? после того как включил xdebug все стало работать как-то медленней.
Код класса регистрации
<?php
class Register extends Db{
protected $table = 'user';
private $name;
private $login;
private $email;
private $password;
private $submit;
public function __construct() {
$this->name = $_POST['name'];
$this->login = $_POST['login'];
$this->email = $_POST['email'];
$this->password = password_hash($_POST['password'], PASSWORD_BCRYPT);
$this->submit = $_POST['submit'];
parent::__construct();
}
public function register() {
if(isset($this->submit)) {
$query = "INSERT INTO `$this->table` (`name`, `login`, `email`, `pass`) VALUES(:name, :login, :email, :password)";
$stmt = $this->db->prepare($query);
$stmt->bindParam(':name', $this->name);
$stmt->bindParam(':login', $this->login);
$stmt->bindParam(':email', $this->email);
$stmt->bindParam(':password', $this->password);
$stmt->execute();
} else {
echo 'error';
}
}
}
Роутер
class Router {
private $routes;
public function __construct() {
$this->routes = include(ROOT.'/components/routes.php');
}
public function start()
{
$url = $_SERVER['REQUEST_URI']; // get the current url
foreach ($this->routes as $pattern => $value) {
if (preg_match("~$pattern~", $url)) {
if (array_key_exists(trim($url, '/'), $this->routes) || is_int($url)) {
$path = explode('/', $this->routes[trim($url, '/')]); // thim(url) it is the key for array
$controller = $path[0];
$action = $path[1];
//view action and controller name
echo $controller . '<br>';
echo $action . '<br>';
echo "<hr>";
$obj = new $path[0];
$obj->$action;
call_user_func([$obj, $action]);
} else {
$postId = explode('/', $url);
$id = $postId[1];
$obj = new NewsController();
$obj->actionOne($id);
}
}
}
}
}