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<?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
<?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 $usuario = new Usuario(); /* 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); } break; 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. } default: 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:
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
/* 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);
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
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.
Comentários
?y web-site: N? Sick ?ish: https://www.youtube.com/watch?v=zjjuEpgQ7ss
paragraph.
I have learned lot of th?ngs f?om it reg?rding blogging.
t?anks.
att.
RSS feed for comments to this post.