[MVC] Полная миграция на MVC архитектуру
- Создано ядро MVC: App, Router, Controller, Model, View, Database - Созданы модели: User, Product, Category, Cart, Order - Созданы контроллеры: Home, Auth, Product, Cart, Order, Page, Admin - Созданы layouts и partials для представлений - Добавлены все views для страниц - Настроена маршрутизация с чистыми URL - Обновлена конфигурация Docker и Apache для mod_rewrite - Добавлена единая точка входа public/index.php
This commit is contained in:
91
app/Views/auth/login.php
Normal file
91
app/Views/auth/login.php
Normal file
@@ -0,0 +1,91 @@
|
||||
<?php $title = 'Вход'; ?>
|
||||
|
||||
<main class="profile-page-main">
|
||||
<div class="profile-container">
|
||||
<div class="profile-left-col">
|
||||
<div class="logo">AETERNA</div>
|
||||
</div>
|
||||
|
||||
<div class="profile-right-col">
|
||||
<div class="profile-form-block">
|
||||
<h2>ВХОД В АККАУНТ</h2>
|
||||
|
||||
<?php if (!empty($error)): ?>
|
||||
<div style="background: #f8d7da; color: #721c24; padding: 15px; border-radius: 5px; margin-bottom: 20px;">
|
||||
<?= htmlspecialchars($error) ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (!empty($success)): ?>
|
||||
<div style="background: #d4edda; color: #155724; padding: 15px; border-radius: 5px; margin-bottom: 20px;">
|
||||
<?= htmlspecialchars($success) ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<form class="profile-form" id="loginForm">
|
||||
<input type="hidden" name="redirect" value="<?= htmlspecialchars($redirect ?? '/catalog') ?>">
|
||||
|
||||
<div class="input-group">
|
||||
<label for="login-email">E-mail</label>
|
||||
<input type="email" id="login-email" name="email" placeholder="Ваш электронный адрес" required>
|
||||
</div>
|
||||
|
||||
<div class="input-group">
|
||||
<label for="login-password">Пароль</label>
|
||||
<input type="password" id="login-password" name="password" placeholder="Введите пароль" required>
|
||||
</div>
|
||||
|
||||
<div class="form-options">
|
||||
<label class="remember-me">
|
||||
<input type="checkbox" id="remember" name="remember">
|
||||
Запомнить меня
|
||||
</label>
|
||||
<a href="#" class="forgot-password">Забыли пароль?</a>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn primary-btn save-btn">Войти</button>
|
||||
|
||||
<div class="auth-actions">
|
||||
<span class="auth-text">Нет аккаунта?</span>
|
||||
<a href="/cite_practica/register" class="login-btn">Зарегистрироваться</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('#loginForm').on('submit', function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
const email = $('#login-email').val();
|
||||
const password = $('#login-password').val();
|
||||
const redirect = $('input[name="redirect"]').val();
|
||||
|
||||
if (!email || !password) {
|
||||
alert('Заполните все поля');
|
||||
return;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: '/cite_practica/login',
|
||||
method: 'POST',
|
||||
data: { email: email, password: password, redirect: redirect },
|
||||
dataType: 'json',
|
||||
success: function(result) {
|
||||
if (result.success) {
|
||||
window.location.href = result.redirect || '/cite_practica/catalog';
|
||||
} else {
|
||||
alert(result.message || 'Ошибка авторизации');
|
||||
}
|
||||
},
|
||||
error: function() {
|
||||
alert('Ошибка сервера. Попробуйте позже.');
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
95
app/Views/auth/register.php
Normal file
95
app/Views/auth/register.php
Normal file
@@ -0,0 +1,95 @@
|
||||
<?php $title = 'Регистрация'; ?>
|
||||
|
||||
<main class="profile-page-main">
|
||||
<?php if (!empty($errors)): ?>
|
||||
<div style="background: #f8d7da; color: #721c24; padding: 15px; border-radius: 5px; margin: 20px auto; max-width: 800px;">
|
||||
<h4><i class="fas fa-exclamation-circle"></i> Ошибки регистрации:</h4>
|
||||
<ul>
|
||||
<?php foreach ($errors as $error): ?>
|
||||
<li><?= htmlspecialchars($error) ?></li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (!empty($success)): ?>
|
||||
<div style="background: #d4edda; color: #155724; padding: 15px; border-radius: 5px; margin: 20px auto; max-width: 800px;">
|
||||
<i class="fas fa-check-circle"></i> <?= htmlspecialchars($success) ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<div style="background: #e8f4fd; padding: 15px; border-radius: 5px; margin: 20px auto; max-width: 800px; text-align: center; font-size: 14px; color: #0c5460;">
|
||||
<i class="fas fa-info-circle"></i> Для доступа к каталогу и оформления заказов необходимо зарегистрироваться
|
||||
</div>
|
||||
|
||||
<div class="profile-container">
|
||||
<div class="profile-left-col">
|
||||
<div class="logo" style="color: white;">AETERNA</div>
|
||||
<div style="margin-top: 30px; color: rgba(255,255,255,0.8);">
|
||||
<h3 style="margin-bottom: 15px; font-size: 18px;">Присоединяйтесь к нам</h3>
|
||||
<p style="font-size: 14px; line-height: 1.5;">Создайте аккаунт чтобы получить доступ ко всем функциям:</p>
|
||||
<ul style="margin-top: 15px; padding-left: 20px; font-size: 13px;">
|
||||
<li>Доступ к каталогу товаров</li>
|
||||
<li>Добавление товаров в корзину</li>
|
||||
<li>Оформление заказов</li>
|
||||
<li>История покупок</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="profile-right-col">
|
||||
<div class="profile-form-block">
|
||||
<h2>РЕГИСТРАЦИЯ</h2>
|
||||
<form class="profile-form" action="/cite_practica/register" method="POST" id="registrationForm">
|
||||
<div class="input-group">
|
||||
<label for="fio">ФИО *</label>
|
||||
<input type="text" id="fio" name="fio" placeholder="Введите ваше ФИО"
|
||||
value="<?= htmlspecialchars($old['fio'] ?? '') ?>" required>
|
||||
</div>
|
||||
|
||||
<div class="input-group">
|
||||
<label for="city">Город *</label>
|
||||
<input type="text" id="city" name="city" placeholder="Укажите ваш город"
|
||||
value="<?= htmlspecialchars($old['city'] ?? '') ?>" required>
|
||||
</div>
|
||||
|
||||
<div class="input-group">
|
||||
<label for="email">E-mail *</label>
|
||||
<input type="email" id="email" name="email" placeholder="Ваш электронный адрес"
|
||||
value="<?= htmlspecialchars($old['email'] ?? '') ?>" required>
|
||||
</div>
|
||||
|
||||
<div class="input-group">
|
||||
<label for="phone">Телефон *</label>
|
||||
<input type="tel" id="phone" name="phone" placeholder="+7(912)999-12-23"
|
||||
value="<?= htmlspecialchars($old['phone'] ?? '') ?>" required>
|
||||
</div>
|
||||
|
||||
<div class="input-group">
|
||||
<label for="password">Пароль *</label>
|
||||
<input type="password" id="password" name="password" placeholder="Минимум 6 символов" required>
|
||||
</div>
|
||||
|
||||
<div class="input-group">
|
||||
<label for="confirm-password">Подтвердите пароль *</label>
|
||||
<input type="password" id="confirm-password" name="confirm-password" placeholder="Повторите пароль" required>
|
||||
</div>
|
||||
|
||||
<div class="privacy-checkbox">
|
||||
<label>
|
||||
<input type="checkbox" id="privacy" name="privacy" required>
|
||||
Я соглашаюсь с условиями обработки персональных данных *
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<a href="/cite_practica/login" style="display: block; margin: 15px 0; text-align: center; color: #453227;">
|
||||
Уже есть аккаунт? Войти
|
||||
</a>
|
||||
|
||||
<button type="submit" class="btn primary-btn save-btn">Зарегистрироваться</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
Reference in New Issue
Block a user