JAMES WEB
Aprenda como se faz.
Criando Formulário de Autenticação
Dando continuidade ao desenvolvimento do nosso sistema, vamos criar o formulario de login. Nessa etapa, o sistema irá capturar o nome de usuário e a senha digitado.
Esses dados são comparados com as informações armazenadas no banco de dados (db-ecommerce), mais especificamente na tabela tb_users. Caso o usuário e a senha fornecidos correspondam a um registro existente no banco de dados, e a senha esteja criptografada corretamente, o sistema concederá acesso à área administrativa.

Para compreender melhor essa lógica, sugiro que você acesse o banco de dados db-ecommerce e observe a tabela tb_users. Nessa tabela, você encontrará registros de usuários, incluindo o nome de usuário (campo deslogin) e a senha criptografada (campo despassword).
Por exemplo, existe um registro com deslogin igual a ‘admin’ e a senha correspondente criptografada. Além disso, a coluna inadmin indica se o usuário possui permissão de administrador. Um valor ‘1’ nessa coluna significa que o usuário é um administrador e, portanto, terá acesso à área administrativa após a autenticação.

Criando “Rota Login” – Formulário de Autênticação
Para darmos continuidade ao desenvolvimento, precisamos ajustar o nosso template de login.
- Copiar o arquivo;
- Localize o arquivo “login.html” na pasta “c: > xampp > htdocs > ecommerce > res > admin> pages > examples > login“;
- Faça uma cópia desse arquivo e cole-o na pasta “c: > xampp > htdocs > ecommerce > views > admin“;
- Ajustar os links;
- Abra o arquivo “login.html” que você acabou de copiar;
- Procure por linhas que contenham links para arquivos CSS ou JavaScript, como por exemplo:
- Substitua essa linha por:
Configurando a Rota Formulário Login (login_get)
Com Sublime-text crie na pasta raiz do sistema (ecommerce) o arquivo admin.php.
Crie a “Rota Formulário Login (login_get)”. o arquivo ficará parecido com o exibido na imagem a seguir:
admin.php
1 2 3 4 5 6 7 8 9 10 11 12 | <?php use \Hcode\PageAdmin; use \Hcode\Model\User; //Rota Login - Formulário Autênticação (login_get) $app ->get( '/admin/login_get' , function () { $page = new PageAdmin([ "header" => false, "footer" => false ]); $page ->setTpl( "login" ); }); ?> |
Explicando linha por linha do arquivo admin.php
- L2 – use \Hcode\PageAdmin;: use: É a palavra-chave em PHP serve para “importar” uma classe. É como se você estivesse dizendo ao seu programa: “Eu vou precisar usar a classe PageAdmin. O Hcode que representa um namespace, que é uma forma de organizar classes em um projeto maior, evitando conflitos de nomes.
- L3 – use \Hcode\Model\User;: Essa linha faz a mesma coisa que a anterior, mas importando a classe User do namespace Hcode\Model. A classe User representa um usuário do sistema e contém informações como nome, email, etc. As classes PageAdmin e User são criadas em outro lugar do projeto e possuem funcionalidades prontas para serem utilizadas.
- L5 – $app->get(‘/admin/login_get’, function() { … });:
- $app->get(): Essa linha chama o método do objeto $app. Esse método é usado para definir uma rota.
- :/admin/login_get É o endereço da rota. Quando alguém acessar a URL do seu site com esse caminho, o código dentro da função anônima será executado “function() { … }”.
- L6 – $page = new PageAdmin([…]);: Cria um novo objeto da classe PageAdmin. O array passado como parâmetro serve para configurar a página, nesse caso, desabilitando o cabeçalho e o rodapé. Ao definir header e footer como false, você está informando à classe PageAdmin que não deseja incluir as seções correspondentes na página final. Isso significa que o conteúdo da página será renderizado sem as tags HTML que normalmente envolvem o cabeçalho e o rodapé, como <header> e <footer>.
- L10 – $page->setTpl(“login”);: Define o template (ou modelo) que será utilizado para renderizar a página. o arquivo HTML “login.html” que contém a estrutura do formulário de login.
Incorporando o arquivo admin.php no index.php
- Abra o arquivo “index.php”;
- Encontre a parte do código onde são definidas as rotas;
- Adicione a linha “require_once(‘admin.php’);” junto como as instruções de incorporações.
Criando a Classe pageAdmin
Ao criar o arquivo admin.php usamos a classe pageAdmin, especificamente na linha “use \Hcode\PageAdmin;”. Então deveremos criar a “classe pageAdmin”. Para isto acesse o Sublime-text e crie um novo arquivo “pageAdmin.php” na pasta “src” do caminho ecommerce > vendor > hcodebr > php-classes > src. Ele deverá ter a seguinte aparência:
1 2 3 4 5 6 7 8 9 10 11 12 | <?php namespace Hcode; use Rain\Tpl; class PageAdmin extends Page { public function __construct( $opts = array (), $tpl_dir = "/ecommerce/views/admin/" ) { parent::__construct( $opts , $tpl_dir ); } } ?> |
Entendendo a lógica:
Este trecho de código define uma classe chamada PageAdmin que estende a classe Page. A classe PageAdmin é usada para criar a página administrativa, enquanto a classe Page é a classe base mais genérica para criação de páginas.
- L2 – namespace Hcode;:
Define o namespace da classe. Isso ajuda a evitar conflitos de nomes quando você tem várias classes com o mesmo nome em diferentes partes do seu projeto. - L3 – use Rain\Tpl;:
Importa a classe Tpl do namespace Rain. Rain\Tpl é uma biblioteca ou framework que está sendo usada para renderizar templates (páginas HTML) na aplicação. - L4 – class PageAdmin extends Page:
Cria a nova classe chamada PageAdmin. A palavra-chave extends indica que a classe PageAdmin herda da classe Page. Isso significa que ela possui todas as propriedades e métodos da classe Page e pode sobrecarregá-los ou adicionar novos. - L6 – public function __construct($opts = array(), $tpl_dir = “/ecommerce/views/admin/”):
Define o construtor da classe PageAdmin. O construtor é um método especial que é chamado automaticamente quando um objeto da classe é criado. - $opts:
É um parâmetro opcional que pode ser usado para passar opções de configuração para a classe PageAdmin. - $tpl_dir:
É um parâmetro que define o diretório onde estão localizados os templates (/ecommerce/views/admin/). - L9 – parent::__construct($opts, $tpl_dir);:
Chama o construtor da classe pai (Page) passando os mesmos argumentos. Isso significa que a classe PageAdmin está reutilizando o código do construtor da classe Page para realizar algumas tarefas básicas.
Como mencionamos as páginas de login geralmente possuem uma estrutura visual diferente e não requerem os elementos comuns presentes no cabeçalho e rodapé das outras páginas. Por isso, desabilitamos a renderização dessas partes na página de login.
Acessando Formulário de Autênticação
O formulário de autênticação (login.html) está disponivel para download. Ele deve ser baixado na pasta “views/admin”.
A fim de proporcionar acesso ao formulário de autenticação, procederemos à edição do hiperlink “Login” situado na página principal. Utilizando a ferramenta de edição Sublime Text, localize e abra o arquivo “header.html” dentro da pasta “views”. Em seguida, identifique o elemento de lista que contém o hiperlink em questão e substitua o atributo “href” pelo seguinte valor: “/ecommerce/admin/login_get”. Veja como deverá ficar:
1 2 3 4 5 6 7 8 9 | < div class=”user-menu”> < ul > < li >< a href = "#" >< i class = "fa fa-user" ></ i > Minha Conta</ a ></ li > < li >< a href = "#" >< i class = "fa fa-heart" ></ i > Lista de Desejos</ a ></ li > < li >< a href = "#" >< i class = "fa fa-shopping-cart" ></ i > Meu Carrinho</ a ></ li > < li >< a href = "/ecommerce/admin/login_get" >< i class = "fa fa-lock" ></ i > Login</ a ></ li > </ ul > </ div > |
Personalizando o formulário de login:
Vamos realizar algumas modificações no formulário de autenticação para torná-lo mais claro e intuitivo para o usuário.
- Alterando o campo de e-mail:
- o Abra o arquivo login.html em seu editor de código (Sublime Text).
- o Localize a linha:
< input type = “email” class = “form-control” placeholder = “Email” >
- Altere conforme a seguir:
< input type=”text” class = “form-control” placeholder = “Login” name = “login” >
Explicação: Alteramos o tipo do campo de “email” para “text” para permitir a entrada de diferentes tipos de logins (não apenas e-mails). Modificamos o texto do placeholder para “Login” e adicionamos o atributo name=”login” para identificar esse campo no envio do formulário. - Alterando o ícone:
- Localize o ícone de envelope e substitua a classe glyphicon glyphicon-envelope por glyphicon glyphicon-user. Isso irá exibir o ícone de um usuário no campo de login.
- Adicionando o atributo name ao campo de senha:
- Localize o campo de senha e adicione o atributo name=”password” para identificar esse campo no envio do formulário.
Configurando o envio do formulário:
Localize o elemento com a tag form na linha action=”../../index2.html” e substitua por action=”ecommerce/admin/login_post“. Isso fará com que os dados do formulário sejam enviados (post) para a página de processamento de login.
Para testar acesse “localhost/ecommerce” e clique no menu superior no link “Login” na página principal e você deverá visualizar a formulário de login conforme o esperado. Não se esqueça de ativar o “Apache” e o “MySQL” no painel Xampp.
