Создание формы авторизации в OpenCart

Создание формы авторизации в OpenCart

OpenCart — это бесплатная система управления интернет-магазином с открытым исходным кодом, написанная на PHP. Одной из ключевых функций любого интернет-магазина является форма авторизации, которая позволяет пользователям входить в свои учетные записи и совершать покупки. В этой статье мы подробно рассмотрим процесс создания формы авторизации в OpenCart.

Требования

Прежде чем приступить к созданию формы авторизации, убедитесь, что у вас установлена последняя версия OpenCart. Вы также должны иметь базовые знания HTML, PHP и MySQL.

Шаг 1: Создание файла формы авторизации

Первым шагом является создание файла, который будет содержать HTML-код формы авторизации. Откройте текстовый редактор и создайте новый файл с именем login.tpl в следующем каталоге: catalog/view/theme/default/template/account/.

Вставьте следующий HTML-код в файл login.tpl:

<?php echo $header; ?> <div id="account-login" class="container"> <ul class="breadcrumb"> <?php foreach ($breadcrumbs as $breadcrumb) { ?> <li><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a></li> <?php } ?> </ul> <?php if ($success) { ?> <div class="alert alert-success alert-dismissible"><?php echo $success; ?></div> <?php } ?> <?php if ($error_warning) { ?> <div class="alert alert-danger alert-dismissible"><?php echo $error_warning; ?></div> <?php } ?> <div class="row"><?php echo $column_left; ?> <div id="content" class="<?php echo $class; ?>"><?php echo $content_top; ?> <div class="well"> <h2><?php echo $text_new_customer; ?></h2> <p><strong><?php echo $text_register; ?></strong></p> <a href="<?php echo $register; ?>" class="btn btn-primary"><?php echo $button_continue; ?></a> </div> <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data"> <div class="row"> <div class="col-sm-6"> <div class="well"> <h2><?php echo $text_returning_customer; ?></h2> <p><strong><?php echo $text_i_am_returning_customer; ?></strong></p> <div class="form-group"> <label class="control-label" for="input-email"><?php echo $entry_email; ?></label> <input type="text" name="email" value="<?php echo $email; ?>" placeholder="<?php echo $entry_email; ?>" id="input-email" class="form-control" /> </div> <div class="form-group"> <label class="control-label" for="input-password"><?php echo $entry_password; ?></label> <input type="password" name="password" value="<?php echo $password; ?>" placeholder="<?php echo $entry_password; ?>" id="input-password" class="form-control" /> <a href="<?php echo $forgotten; ?>"><?php echo $text_forgotten; ?></a></div> </div> <div class="buttons clearfix"> <div class="pull-right"><input type="submit" value="<?php echo $button_login; ?>" class="btn btn-primary" /></div> </div> <?php if ($redirect) { ?> <input type="hidden" name="redirect" value="<?php echo $redirect; ?>" /> <?php } ?> </div> </div> </form> <?php echo $content_bottom; ?></div> <?php echo $column_right; ?></div> </div> <?php echo $footer; ?>

Этот код создает HTML-форму для авторизации пользователей. Форма содержит поля для ввода email и пароля, а также кнопку для входа в систему.

Шаг 2: Создание контроллера для формы авторизации

Следующим шагом является создание контроллера, который будет обрабатывать данные, отправленные из формы авторизации. Откройте текстовый редактор и создайте новый файл с именем login.php в следующем каталоге: catalog/controller/account/.

Читайте также  Обзор и применение иконок из Google Fonts

Вставьте следующий PHP-код в файл login.php:

<?php class ControllerAccountLogin extends Controller { private $error = array(); public function index() { $this->load->model('account/customer'); // Если пользователь уже авторизован, перенаправляем его на страницу учетной записи if ($this->customer->isLogged()) { $this->response->redirect($this->url->link('account/account', '', true)); } // Загружаем язык и устанавливаем заголовок страницы $this->load->language('account/login'); $this->document->setTitle($this->language->get('heading_title')); if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { // Unset guest unset($this->session->data['guest']); // Устанавливаем куки для запоминания пользователя $this->load->model('account/customer'); $customer_info = $this->model_account_customer->getCustomerByEmail($this->request->post['email']); if ($customer_info && !$customer_info['status']) { $this->error['warning'] = $this->language->get('error_approved'); } if (!$this->error) { if (!$this->customer->login($this->request->post['email'], $this->request->post['password'])) { $this->error['warning'] = $this->language->get('error_login'); } else { $this->model_account_customer->updateLoginAttempts($this->customer->getEmail()); // Unset previous customer ID in case logged in as a different customer unset($this->session->data['customer_id']); $this->session->data['customer_id'] = $this->customer->getId(); // Добавляем куки для запоминания $this->load->model('account/tracking'); if ($this->config->get('config_tracking')) { $this->model_account_tracking->addTrackingCookie(); } } } } $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_account'), 'href' => $this->url->link('account/account', '', true) ); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_login'), 'href' => $this->url->link('account/login', '', true) ); if (isset($this->error['warning'])) { $data['error_warning'] = $this->error['warning']; } else { $data['error_warning'] = ''; } $data['action'] = $this->url->link('account/login', '', true); $data['register'] = $this->url->link('account/register', '', true); $data['forgotten'] = $this->url->link('account/forgotten', '', true); // Получаем URL для перенаправления после авторизации, если оно задано if (isset($this->request->get['route'])) { $route = $this->request->get['route']; unset($this->request->get['route']); $url = ''; if ($this->request->get) { $url .= http_build_query($this->request->get); } $data['redirect'] = $this->url->link($route, $url, true); } elseif (isset($this->session->data['redirect'])) { $data['redirect'] = $this->session->data['redirect']; unset($this->session->data['redirect']); } else { $data['redirect'] = ''; } if (isset($this->session->data['success'])) { $data['success'] = $this->session->data['success']; unset($this->session->data['success']); } else { $data['success'] = ''; } if (isset($this->request->post['email'])) { $data['email'] = $this->request->post['email']; } else { $data['email'] = ''; } if (isset($this->request->post['password'])) { $data['password'] = $this->request->post['password']; } else { $data['password'] = ''; } $data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header'); $this->response->setOutput($this->load->view('account/login', $data)); } protected function validate() { if (!$this->request->post['email']) { $this->error['warning'] = $this->language->get('error_email'); } elseif (!filter_var($this->request->post['email'], FILTER_VALIDATE_EMAIL)) { $this->error['warning'] = $this->language->get('error_email_invalid'); } if (!$this->request->post['password']) { $this->error['warning'] = $this->language->get('error_password'); } return !$this->error; } } 

Этот контроллер обрабатывает входящие данные из формы авторизации. Он проверяет правильность введенных email и пароля, а также выполняет различные действия, такие как установка кук, перенаправление на другие страницы и отображение сообщений об ошибках.

Шаг 3: Включение формы авторизации в системе OpenCart

После того, как мы создали файлы для формы авторизации и ее контроллера, необходимо включить их в системе OpenCart. Для этого выполните следующие шаги:

  1. Откройте файл catalog/controller/account/account.php и найдите следующий код:

    $data['login'] = $this->url->link('account/login', '', true);

    Замените его на:

    $data['login'] = $this->url->link('account/login');
  2. Откройте файл catalog/view/theme/default/template/common/header.tpl и найдите следующий код:

    <?php if ($logged) { ?> <li><a href="<?php echo $account; ?>"><i class="fa fa-user"></i> <span class="hidden-xs hidden-sm hidden-md"><?php echo $text_account; ?></span></a></li> <ul class="dropdown-menu dropdown-menu-right"> <?php if ($logged) { ?> <li><a href="<?php echo $order; ?>"><?php echo $text_order; ?></a></li> <li><a href="<?php echo $transaction; ?>"><?php echo $text_transaction; ?></a></li> <li><a href="<?php echo $download; ?>">
  3. Замените его на следующий код:

    <?php if ($logged) { ?> <li class="dropdown"><a href="<?php echo $account; ?>" title="<?php echo $text_account; ?>" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"> <span class="hidden-xs hidden-sm hidden-md"><?php echo $text_account; ?></span> <span class="caret"></a> <ul class="dropdown-menu dropdown-menu-right"> <?php if ($logged) { ?> <li><a href="<?php echo $account; ?>"><?php echo $text_account; ?></a></li> <li><a href="<?php echo $order; ?>"><?php echo $text_order; ?></a></li> <li><a href="<?php echo $transaction; ?>"><?php echo $text_transaction; ?></a></li> <li><a href="<?php echo $download; ?>"><?php echo $text_download; ?></a></li> <li class="divider"> <li class="dropdown-header"><?php echo $text_logout; ?></li> <li><a href="<?php echo $logout; ?>"><?php echo $text_logout; ?></a></li> <?php } else { ?> <li><a href="<?php echo $register; ?>"> <?php echo $text_register; ?></a></li> <li><a href="<?php echo $login; ?>"><?php echo $text_login; ?></a></li> <?php } ?> </ul> </li> <?php } else { ?> <li><a href="<?php echo $login; ?>"><i class="fa fa-sign-in"> <span class="hidden-xs hidden-sm hidden-md"><?php echo $text_login; ?></span></a></li> <li><a href="<?php echo $register; ?>"><i class="fa fa-user"> <span class="hidden-xs hidden -sm hidden-md"><?php echo $text_register; ?></span></a></li> <?php } ?>

После выполнения этих шагов форма авторизации будет полностью интегрирована в систему OpenCart, и пользователи смогут входить в свои учетные записи через нее.

Заключение

В этой статье мы подробно рассмотрели процесс создания формы авторизации в OpenCart. Мы создали HTML-файл для формы, PHP-контроллер для обработки данных и интегрировали их в систему OpenCart. Теперь ваш интернет-магазин на OpenCart будет иметь полнофункциональную форму авторизации, что значительно улучшит пользовательский опыт и безопасность вашего сайта.

Советы по созданию сайтов