Login dinâmico em AJAX - PHP | Padrão MVC | jQuery - Parte 2 - Hugo Ferreira - Desenvolvimento de Sites | Softwares | Sistemas Web | Sistemas Desktop | Freelancer | Joomla | Soluções em TI | Indaiatuba SP
Você está aqui » Página Inicial » Artigos » Ajax » Login dinâmico em AJAX - PHP | Padrão MVC | jQuery - Parte 2
Login dinâmico em AJAX - PHP | Padrão MVC | jQuery - Parte 2
Seg, 20 de Dezembro de 2010 19:44
Vamos então dar continuação à nossa série de artigos sobre o desenvolvimento de um Sistema de Login Dinâmico com Ajax.
Como visto anteriormente, na primeira parte estruturamos os arquivos e diretórios que irão compor nosso sistema, foi criado um formulário de login, linkamos ao arquivo 'index.php' os arquivos Javascript e CSS, que usaremos para formatar o layout do sistema e dar dinamismo ao mesmo.
Nessa segunda parte, iremos estruturar todas as classes de manipulação do sistema, e criar sua versão 1.0.
Obs.: Pelo fato de a codificação de cada arquivo, por mais simples que esteja de entender, seja um tanto grande, no lugar de eu postar cada bloco de código de cada classe ou arquivo, irei explicar o que é feito em cada arquivo, informar onde o mesmo se encontra em nosso projeto, e quando houver algum detalhe mais complexo ou que mereça uma explicação mais detalhada, irei postar o código e então desmistificá-lo.
Bem, o primeiro arquivo a ser editado é a Classe Bean, que conterá todos os parâmetros dos usuários que poderão ser manipulados no sistema.
Em nosso projeto, o arquivo encontra-se em:
includes > model > bean > Usuario.class.php
Nesse arquivo, iremos criar a classe base para a manipulação dos dados do usuário.
Os dados a serem manipulados serão os seguintes: Id, Nome, E-mail, Login e Senha.
Ao criar nossa classe, devemos criar também os métodos Getters e Setters, que serão usados em outras classes para obter o que existe nos atributos, ou para setar valores aos atributos da classe.
Veja abaixo uma parte da codificação desta classe:
Usuario.class.php
function setId($valor){
$this -> id = $valor;
//Abaixo os Getters e Setters de cada um dos atributos da classe.
Agora o próximo passo é estruturarmos o arquivo que Controlará todo o fluxo dos usuários no sistema, ou seja, a camada Controller do nosso MVC.
Esse é o arquivo que recebe uma solicitação do sistema, e baseado no que lhe foi requerido, decide o que fazer.
Em nosso caso, o sistema irá receber os dados do usuário (login e senha), enviá-los ao Controlador do sistema, e pedir a ele que faça a autenticação do mesmo. A camada Controller irá conversar com a DAO (Data Access Object), enviando à ela os dados que acabou de receber, e a camada DAO irá verificar a consistência dos dados (em um banco de dados) e, feito isso, responderá para o Controlador se foi encontrado um usuário com os dados informados ou não. Em seguida, o Controlador se comunicará com a camada View, enviando à ela a resposta recebida pela DAO, para que a View decida que tipo de conteúdo irá exibir (em nosso caso, uma mensagem). Basicamente isso.
O controlador de nosso sistema encontra-se em:
includes > controller > UsuarioController.php
Como a camada Controller é a mais complexa de todas, irei postar abaixo a codificação completa do arquivo, e comentar cada parte do mesmo:
UsuarioController.php
//Aqui importamos todas as classes que poderão ser usadas baseado nas solicitações que forem feitas.
require_once("../model/bean/Usuario.class.php"); // Classe Bean
require_once("../model/dao/UsuarioDAO.class.php"); // Classe DAO
require_once("../view/UsuarioView.class.php"); //Classe View
//Armazena na variável $acao o que o sistema esta requisitando (cadastrar, autenticar, excluir, etc)
$acao = $_REQUEST["acao"];
//Baseado no que foi solicitado, chama na classe DAO o método responsável por tal tarefa, e depois manda pra View a
resposta, para ser exibida de alguma forma ao usuário
switch($acao){
case 'autenticar':{
// Se for autenticar, então deverão ser informados login e senha.
//Primeiro instanciamos um objeto da classe Bean, para setar os valores informados no formulário
/* Agora setamos para a Bean os valores informados,pois serão validados na camada DAO, que
irá verificar a consistencia dos dados em um Banco de Dados: MySQL, XML, ou qualquer outra base de
dados; e depois retornar para a controller o resultado. */
$usuario->setLogin($_REQUEST["login"]);
$usuario->setSenha($_REQUEST["senha"]);
/* Agora vamos instanciar um objeto da classe DAO e um da View, e passaremos para a View o que for retornado
pela DAO */
$usuarioDAO = new UsuarioDAO();
$usuarioView = new UsuarioView();
/**Passaremos para o método de autenticação da DAO um objeto da classe Usuário.
Armazenaremos na variável $resultado o que este método retornar. */
$resultado = $usuarioDAO->autenticaUsuario($usuario);
//Agora chamamos um método da View passando para o mesmo o que foi retornado pela DAO.
$usuarioView->respostaAutenticacao($resultado);
case 'cadastrar':{
//Aqui faz as validações necessárias e requisita o método da classe DAO responsável por cadastrar o usuário.
case 'excluir':{
//Aqui faz as validações necessárias e requisita o método da classe DAO responsável por excluir o usuário.
return null; //Por padrão, esse switch não retorna nada.
Bom... feito nosso Controlador, resta-nos então criarmos as classes de interação com o Banco de Dados (DAO) e de visualização (View).
Na camada DAO, criaremos a UsuarioDAO, responsável por toda manipulação dos usuários.
Em nosso projeto, esta classe encontra-se em:
includes > model > dao > UsuarioDAO.class.php
Nesta classe criamos os métodos para:
Adicionar, Excluir, Editar, Listar, Autenticar, etc.
No nosso caso, iremos criar apenas o método para autenticação do usuário, que receberá um objeto do tipo Usuário (Da classe bean Usuário), e usará tal objeto para validar os dados e retornar uma resposta (TRUE ou FALSE) ao Controlador.
Como não estamos abordando em nosso projeto nenhum banco de dados específico, deixarei como lição de casa para vocês inserirem neste método um bloco de código que consulta em um banco de dados qualquer (MySQL, PostgreSQL, etc) os dados do usuário e retorna um valor.
Sendo assim, irei apenas colocar dados estáticos no método de autenticação do usuário para serem comparados com o que foi informado no formulário de login.
Os dados que foram definidos como login e senha apenas para testarmos nosso sistema de login são:
Após efetuar a verificação dos dados, o método de autenticação irá retornar TRUE se os dados estiverem corretos, ou FALSE caso contrário.
Pronto. Até aqui já temos o arquivo que controla o fluxo dos usuários, requisita para a DAO a verificação da existência do usuário no banco de dados, e recebe a resposta do mesmo.
Agora o que falta é apenas criar na camada View a classe responsável por exibir a mensagem na tela para o usuário, informando se os dados enviados no formulário de login estão corretos ou não.
A classe View dos usuários encontra-se em:
includes > view > UsuarioView.class.php
Como visto acima, o Controlador do sistema requisita o método respostaAutenticacao() da classe UsuarioView, enviando a ele a resposta que recebeu da UsuarioDAO.
Veja esta parte do arquivo UsuarioController.php:
//Passaremos para o método de autenticação da DAO um objeto da classe Usuário. Armazenaremos na variável
$resultado o que este método retornar.
O projeto estruturado até o momento está disponível no final deste artigo, e nele adaptei o arquivo 'index.php' com um botão do tipo 'submit' e um input do tipo 'hidden' para enviar ao Controlador do sistema a ação que queremos fazer: Autenticação; para então testarmos se tudo está funcionando corretamente.
Lembrando que isso não será mais necessário quando inserirmos, no próximo artigo, a verificação dinâmica dos dados com Ajax.
Até o momento, temos já um sistema de login com PHP, porém, sem autenticação dinâmica, pois esta será inserida no próximo e último artigo sobre nosso Sistema de Login Dinâmico com Ajax.
Estude bem o projeto, modifique partes, veja ''quem faz o que, como e quando', pois com o entendimento deste projeto, o leitor terá base para criar ótimos projetos usando Ajax com qualquer linguagem de programação que rode do lado servidor (Asp, C#, JSP, PHP, etc). O limite com certeza será sua necessidade, força de vontade e criatividade.
Para baixar o projeto estruturado até esta parte, clique aqui »
Login dinâmico em AJAX - PHP | Padrão MVC | jQuery
Parte I »
Parte II »
Parte III »
Na reprodução total ou parcial deste artigo, mencione a autoria da seguinte forma:
Concepção, Assessoria e Gerenciamento de Soluções e Negócios em TI
www.hcferreira.com.br
0 #12 2014-04-30 14:47
Than? you for sharing your thoug?ts. I truly appreciate your efforts and I am waiting for your further write ups thank you once again.
?y web-site: N? Sick ?ish: https://www.youtube.com/watch?v=zjjuEpgQ7ss
0 #11 2014-04-24 23:21
?wesome! Its really awesome post, I have got mu?? cler id?a ?b?ut from thnis
0 #10 2014-04-24 15:32
Hi, of ciurse this paragraph ?s genuinely fastidious ??d
I have learned lot of th?ngs f?om it reg?rding blogging.
+5 #9 2011-02-07 11:43
Hugo, estou ancioso para terceira parte, espero que você não tenha desistido deste projeto, pois para nós que estamos começando suas dicas estão sendo vitais para a compreensão de como programar corretamente.
-1 #8 2011-02-05 12:00
Bom diaaaaa, quando sai a terceira parte.
+2 #7 2011-01-31 04:06
Cara, realmente muito bom. Já estava desenvolvendo alguma coisa com a mesma ideia, mas me perdi no meio do caminho. Você me deu uma luz!! Aguardo pela 3ª Parte. Parabéns!
+4 #6 2011-01-26 13:00
Quando vai sai a parte III
+1 #5 2011-01-24 11:31
Ficou muito bom, não vejo a hora da terceira parte
+3 #4 2011-01-15 02:46
muito bacana, esperando os próximos artigos
+2 #3 2011-01-13 11:40
Primeiramente parabéns pelo tutorial, ele foi muito útil para o entendimento de vários conceitos, não vejo a hora de ver a parte 3.
E-mail (Não será publicado - Requerido)
Website/Blog (Opcional)
Notificar-me quando houver novos comentários
Confira abaixo todos os artigos postados por Hugo Ferreira
Warning: Creating default object from empty value in /home/hcferreira/www/modules/mod_latestnews/helper.php on line 109
3 razões para iniciar sua gestão de prospecção de clientes
Concorra a 2 ingressos para o Joomla Day SP 2013
Como o SEO pode influenciar no aumento das visitas ao seu site
Login dinâmico em AJAX - PHP | Padrão MVC | jQuery - Parte 3
Login dinâmico em AJAX - PHP | Padrão MVC | jQuery - Parte 1
Login dinâmico em AJAX - PHP | Padrão MVC | jQuery - Introdução
Descobrindo a função explode() do PHP
Categorias dos Artigos...
Ajax	( 4 )
Blogando	( 2 )
PHP	( 1 )
SEO	( 1 )
Receba em seu e-mail artigos, notícias e dicas sobre Desenvolvimento, Soluções e Negócios Web e Desktop.
Indique este site...
Indique este site a seus amigos e eles também saberão mais sobre desenvolvimentos e soluções Web e Desktop!
Clique aqui para indicar »
Interaja com seus clientes tendo em seu site Joomla um Mural de Recados com Foto...
Saiba mais sobre o MyMural »
Sobre Hugo Ferreira
Técnico em Sistemas de Informação, Web Developer e cursando Faculdade de Tecnologia em Banco de Dados, atuo no Desenvolvimento de Sites, Sistemas Web e Desktop desde 2008.
Dentre as tecnologias que trabalho, estão PHP, Java, jQuery, Ajax, Joomla, MySQL, PostgreSQL, Design Patterns, Adobe CS3, Corel, XHTML, CSS e Padrões Web.
Para mais informações sobre desenvolvimentos web e desktop, leia meus artigos, conheça as soluções que ofereço ou entre em contato.