Самый примитивный движок, простой роутинг. Как реализовать формы и обработку форм?
Всем добрый день, изучаю PHP, всегда стараюсь сам разобраться, но на этом застрял уже на неделю, а тема важная. Извините, может по-дурацки всё опишу, но я пока ещё учусь) Я опишу что у меня и как работает, а затем напишу в чём проблема, над которой я сижу очень-очень долго уже... Буду очень благодарен, если поможете :-)
Суть: берём ссылку, если это существующий пользователь, то включаем user.php, там ссылкой в БД получаем информацию, записываем её в $content, возвращаем, потом в основном файле main.php (там 10 строчек html кода и {{ content }} с {{ title }} чтобы их заменить на то, что нам нужно). Меняем {{ content }} на $content регуляркой, всё хорошо, работает. А вот если требуется что-то с формой/обработкой формы, то я вообще не понимаю что делать, если точь-в-точь, только включать другой файл (register.php), то этот файл включается, но идёт на странице сначала он, внизу Header, Body и тд, т.е. не так, как надо (не в том месте).
Основной файл index.php
$url = $_SERVER['REQUEST_URI'];
if (preg_match('#/users/([a-z0-9_-]+)#i', $url, $params)) {
$user = include 'users/user.php';
}
$main = file_get_contents('main.php');
$main = str_replace('{{ title }}', $user['title'], $main);
$main = str_replace('{{ content }}', $user['content'], $main);
echo $main;
Файл /users/user.php
<?php
require_once 'Connect/connect.php';
$slug = $params[1];
$query = "SELECT * FROM users WHERE login='$slug'";
$result = mysqli_query($link, $query) or die(mysqli_error($link));
$user = mysqli_fetch_assoc($result);
$name = $user['login'];
$content = '';
$content .= 'Login: '.'<b>' . $user['login'] . '</b>'.'<br>';
$content .= 'Name: '.'<b>' . $user['name'] . '</b>'.'<br>';
$content .= 'Status_id потом поменять: '.'<b>' . $user['status_id'] . '</b>'.'<br>';
$user = [
'title' => "Пользователь $name",
'content' => $content
];
?>
Так всё работает, всё ок. А вот как мне вместо {{ content }} подставить следующее и чтобы оно обрабатывалось после кнопки отправки? Если я делаю $content = file_get_contents('register.php'), а затем меняю {{ content }} на $content, то там ад какой-то отображается, полузаполненная форма, после "Отправить" ничего не меняется... Как мне поставить вместо {{ content }} файл с регистрацией, и чтобы после "отправить" код обрабатывался? регистрацию максимально упростил, чтобы не мусорить тут стеной бесполезных проверок
register.php
<?php
if (!empty($_POST['login']) and !empty($_POST['password']) and !empty($_POST['confirm'] ) ) {
if ($_POST['password'] == $_POST['confirm']) {
$query = "INSERT INTO users SET login='$login', password='$password'";
mysqli_query($link, $query);
}
}
?>
<form action="" method="POST">
Логин <input name="login" placeholder="enter login" value="<?php if(!empty($_POST['login'])) echo $_POST['login']; ?>">
Пароль <input name="password" type="password" value="<?php if(!empty($_POST['password'])) echo $_POST['password']; ?>">
Подтверждение <input type="password" name="confirm" value="<?php if(!empty($_POST['confirm'])) echo $_POST['confirm']; ?>">
<input type="submit">
</form>