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

Login dinâmico em AJAX - PHP | Padrão MVC | jQuery - Parte 2

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
  <?php   class Usuario{   var $id; var $nome; var $email; var $login; var $senha;   //Id function getId(){ return $this -> id; } 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
  1.  
  2. <?php
  3.  
  4. //Aqui importamos todas as classes que poderão ser usadas baseado nas solicitações que forem feitas.
  5. require_once("../model/bean/Usuario.class.php"); // Classe Bean
  6. require_once("../model/dao/UsuarioDAO.class.php"); // Classe DAO
  7. require_once("../view/UsuarioView.class.php"); //Classe View
  8.  
  9. //Armazena na variável $acao o que o sistema esta requisitando (cadastrar, autenticar, excluir, etc)
  10. $acao = $_REQUEST["acao"];
  11.  
  12. //Baseado no que foi solicitado, chama na classe DAO o método responsável por tal tarefa, e depois manda pra View a
  13. resposta, para ser exibida de alguma forma ao usuário
  14. switch($acao){
  15.  
  16. case 'autenticar':{
  17.  
  18. // Se for autenticar, então deverão ser informados login e senha.
  19.  
  20. //Primeiro instanciamos um objeto da classe Bean, para setar os valores informados no formulário
  21. $usuario = new Usuario();
  22.  
  23. /* Agora setamos para a Bean os valores informados,pois serão validados na camada DAO, que
  24. irá verificar a consistencia dos dados em um Banco de Dados: MySQL, XML, ou qualquer outra base de
  25. dados; e depois retornar para a controller o resultado. */
  26. $usuario->setLogin($_REQUEST["login"]);
  27. $usuario->setSenha($_REQUEST["senha"]);
  28.  
  29. /* Agora vamos instanciar um objeto da classe DAO e um da View, e passaremos para a View o que for retornado
  30. pela DAO */
  31. $usuarioDAO = new UsuarioDAO();
  32. $usuarioView = new UsuarioView();
  33.  
  34. /**Passaremos para o método de autenticação da DAO um objeto da classe Usuário.
  35. Armazenaremos na variável $resultado o que este método retornar. */
  36. $resultado = $usuarioDAO->autenticaUsuario($usuario);
  37.  
  38. //Agora chamamos um método da View passando para o mesmo o que foi retornado pela DAO.
  39. $usuarioView->respostaAutenticacao($resultado);
  40.  
  41. }
  42. break;
  43.  
  44. case 'cadastrar':{
  45. //Aqui faz as validações necessárias e requisita o método da classe DAO responsável por cadastrar o usuário.
  46. }
  47.  
  48. case 'excluir':{
  49. //Aqui faz as validações necessárias e requisita o método da classe DAO responsável por excluir o usuário.
  50. }
  51.  
  52. default:
  53. return null; //Por padrão, esse switch não retorna nada.
  54.  
  55. }
  56.  
  57.  
  58. ?>



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:
Login: admin
Senha: 123

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:


UsuarioController.php
  1.  
  2. /* Agora vamos instanciar um objeto da classe DAO e um da View, e passaremos para a View o que for retornado
  3. pela DAO */
  4. $usuarioDAO = new UsuarioDAO();
  5. $usuarioView = new UsuarioView();
  6.  
  7. //Passaremos para o método de autenticação da DAO um objeto da classe Usuário. Armazenaremos na variável
  8. $resultado o que este método retornar.
  9. $resultado = $usuarioDAO->autenticaUsuario($usuario);
  10.  
  11. //Agora chamamos um método da View passando para o mesmo o que foi retornado pela DAO.
  12. $usuarioView->respostaAutenticacao($resultado);
  13.  
  14.  



Terminamos.

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.

Até breve.




Para baixar o projeto estruturado até esta parte, clique aqui »


Login dinâmico em AJAX - PHP | Padrão MVC | jQuery


ATENÇÃO
Na reprodução total ou parcial deste artigo, mencione a autoria da seguinte forma:

Hugo Ferreira
Concepção, Assessoria e Gerenciamento de Soluções e Negócios em TI

www.hcferreira.com.br

Comentários  

 
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
Quote
 
 
0 #11 2014-04-24 23:21
Αwesome! Its really awesome post, I have got muϲɦ cler idеa ɑbօut from thnis
paragraph.
Quote
 
 
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.

tɦanks.
Quote
 
 
+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.
Quote
 
 
-1 #8 2011-02-05 12:00
Bom diaaaaa, quando sai a terceira parte.
Quote
 
 
+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!
Quote
 
 
+4 #6 2011-01-26 13:00
Quando vai sai a parte III
Quote
 
 
+1 #5 2011-01-24 11:31
Ficou muito bom, não vejo a hora da terceira parte
Quote
 
 
+3 #4 2011-01-15 02:46
muito bacana, esperando os próximos artigos
Quote
 
 
+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.

att.
Quote
 

Adicionar comentário


Security code
Atualizar código

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

Warning: Creating default object from empty value in /home/hcferreira/www/modules/mod_latestnews/helper.php on line 109

Warning: Creating default object from empty value in /home/hcferreira/www/modules/mod_latestnews/helper.php on line 109

Warning: Creating default object from empty value in /home/hcferreira/www/modules/mod_latestnews/helper.php on line 109

Warning: Creating default object from empty value in /home/hcferreira/www/modules/mod_latestnews/helper.php on line 109

Warning: Creating default object from empty value in /home/hcferreira/www/modules/mod_latestnews/helper.php on line 109

Warning: Creating default object from empty value in /home/hcferreira/www/modules/mod_latestnews/helper.php on line 109

Warning: Creating default object from empty value in /home/hcferreira/www/modules/mod_latestnews/helper.php on line 109

Warning: Creating default object from empty value in /home/hcferreira/www/modules/mod_latestnews/helper.php on line 109

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.

Últimos artigos publicados


Warning: Creating default object from empty value in /home/hcferreira/www/modules/mod_latestnews/helper.php on line 109

Warning: Creating default object from empty value in /home/hcferreira/www/modules/mod_latestnews/helper.php on line 109

Warning: Creating default object from empty value in /home/hcferreira/www/modules/mod_latestnews/helper.php on line 109

Warning: Creating default object from empty value in /home/hcferreira/www/modules/mod_latestnews/helper.php on line 109

Warning: Creating default object from empty value in /home/hcferreira/www/modules/mod_latestnews/helper.php on line 109

Entre em contato


Hugo Ferreira - Desenvolvimentos, Soluções e Negócios Web e Desktop
© 2010 - 2017 - Todos os direitos reservados
by Nano Incub