SlideShare une entreprise Scribd logo
1  sur  24
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de Lima
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de Lima
Implementando o
Login e Logout
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de Lima
Hoje nós iremos aprender a criar uma função de Login e Logout para os clientes no
Mercado Online, e hoje nós faremos as seguintes configurações:
• Criaremos um formulário para Login;
• Criaremos a função de Login;
• Aprenderemos a utilizar a Session;
• Criaremos a função de Logout;
• Aprenderemos a utilizar o Anchor;
• Aprenderemos a utilizar o FlashData.
• Exercício;
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de Lima
Inicialmente para criar um sistema de login, precisaremos de alguns dados do
cliente para autenticar, neste caso utilizaremos o E-mail e Senha para autenticar,
precisaremos de um formulário de Login, e este formulário deve enviar as
informações para um novo controller chamado login que terá apenas o método
autenticar.
Utilize o helper FORM para lhe auxiliar.
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de Lima
No controller login, criaremos a função autentica e dentro desta função pegaremos
o E-mail e Senha que o usuário informou, e consultaremos no nosso Banco de Dados
para verificar se existe algum cadastro com o e-mail e senha informados. Para verificar
criaremos uma função no Usuarios_model chamado autentica, que receberá o
e-mail e senha.
Lembre-se de transformar a senha em MD5.
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de Lima
Nosso Controller deve estar semelhante a este:
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de Lima
Agora vamos criar nossa função autentica no usuarios_model. Para criar essa função
devemos receber como parâmetro um usuário, porém temos que verificar se o
E-mail e senha estão no nosso banco de dados e depois retorna se achou ou se não achou,
para verificar dados específicos em um Banco de dados precisamos utilizar um Where.
Porém como fazer isso no CodeIgniter?
Podemos fazer de duas maneiras simples.
1. Antes de consultar informa o Where;
2. Mudar nosso código para utilizar o get_where, que passamos a tabela e uma array
com os dados do Where.
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de Lima
1. Informando o Where antes da consulta:
public function autentica($usuario){
$this->db->where("email", $usuario["email"]);
$this->db->where("senha", $usuario["senha"]);
$usuario = $this->db->get("usuarios")->row_array();
return $usuario;
}
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de Lima
2. Utilizando o get_where:
public function autentica($usuario){
$usuario = $this->db->get_where("usuarios", array(
"email"=>$usuario["email"],
"senha"=>$usuario["senha"])
)->row_array();
return $usuario;
}
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de Lima
Agora nós temos nosso código que verifica se existe um usuário com o E-mail e Senha
Informados. Porém, aonde vamos armazenar aquele resultado?
Seria legal que depois que localizarmos um usuário criar uma sessão para ele, algo que
só o usuário que eu acabei de achar e o servidor tivessem.
No CodeIgniter existe uma função chamada userdata, que fica dentro da classe session,
para adicionar um valor nesta função, utiliza o set_userdata, mas vamos passar uma
Mensagem também, para deixar nosso código mais compreensível para o usuário, e depois
Direcionaremos para uma view que exibirá está mensagem.
Então nosso código irá ficar semelhante a este:
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de LimaRealize um teste, utilizando o seu usuário cadastrado.
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de Lima
Só que quando vamos testar, ele já cai em um erro.
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de Lima
Mas espera um momento, nós já vimos este erro em outro slide:
A PHP Error was encountered
Severity: Notice
Message: Undefined property: Login::$session
Filename: controllers/login.php
Erro de propriedade indefinida?
Neste caso, nossa propriedade está correta, mas porque não está carregando?
Por um simples e pequeno motivo, esquecemos de carregar a library da session, mas a
Session é algo muito importante para todo meu código e eu vou utilizar bastante ela.
Então vamos voltar no AutoLoad, e além de carregar o database, iremos carregar a
Session automaticamente.
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de Lima
Mas se eu já fiz o login no sistema, não quero que apareça o formulário para fazer o login
Ou o formulário de cadastro novamente, eu quero que apareça apenas os produtos.
E se eu estou logado no sistema, eu também quero fazer o Logout.
Vamos fazer uma parte de cada vez:
1. Alteraremos a index, para caso estejamos logados, não exibir os formulários;
2. Criar um botão para fazer o logout;
3. Melhorar a visualização da mensagem de “Logado com Sucesso” ou
“Login ou Senha inválidas”;
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de Lima
Começaremos com o mais fácil e rápido, vá na pasta Produtos e no arquivo Index.php,
e antes de criar os formulários faça uma verificação utilizando um if.
- Mas if o que?
Se nós utilizamos o set_userdata, para atribuir um valor no userdata, vamos utiliza-lo
Para verificar se existe algum valor “setado” ou não.
Para realizar esta verificação fazemos:
<?php if($this->session->userdata("usuario_logado")) : ?>
E logo após criarmos o ultimo formulário, terminaremos o nosso if:
<?php endif ?>
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de Lima
Agora que fazemos uma verificação para ver se tem algum usuário
ativo ou não no sistema, só que falto o botão de deslogar. Para criar
este botão, utilizaremos um anchor, que recebe 3 parâmetros,
o primeiro é qual a ação dele quando clicado, o segundo é o nome que
será exibido e o terceiro é um array que contem as informações dele,
como class, id, name e outras Tag de HTML.
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de Lima
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de Lima
Nosso anchor direciona para o login/logout, porém ainda não criamos está função.
Vamos no Controller Login e criaremos a função logout, que ela ira retirar o valor
do login.
public function logout(){
$this->session->unset_userdata("usuario_logado");
}
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de Lima
Agora nós temos um sistema de Login e Logout de usuários, mas ainda falta melhorar
na questão das mensagens, seria legal utilizar alguma função que exibisse a mensagem
apenas uma vez e depois desaparecesse.
Para isso nós temos a função flashdata, que recebe 2 parâmetros.
O Primeiro parâmetro é o nome do flashdata e o segundo é a mensagem que dele.
Vamos adicionar um valor no flashdata quando fazemos o login. Para isso retorne a função
Autenticar e caso ele ache um usuário, adicione uma mensagem de:
“Login realizado com sucesso”
E depois, redirecione para a pagina inicial.
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de Lima
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de Lima
Depois de ter criado a mensagem, vamos exibi-la.
Vá na pasta Produtos e abra o arquivo Index, e antes da
tag h1 Produtos, verifique se tem algum flashdata do tipo
“success”, e se tiver vamos exibi-lo.
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de Lima
Este é o código que deve ser adicionado na Index:
<?php if($this->session->flashdata("success")) : ?>
<p style="text-align:center;" class="alert alert-success">
<?= $this->session->flashdata("success"); ?> </p>
<?php endif ?>
Agora temos uma index mais bonita e com uma mensagem mais agradavel.
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de Lima
Exercicio
Implementando o Login e Logout
Exibindo mensagens com o FlashData
Criado por: Raniere de Lima
Crie um flashdata para caso o login ou senha
estiverem erradas, e para quando o Logout
for realizado.

Contenu connexe

En vedette

ITQAN Presentation - MEDIA.PPTX
ITQAN Presentation - MEDIA.PPTXITQAN Presentation - MEDIA.PPTX
ITQAN Presentation - MEDIA.PPTXITQAN INSTITUTE
 
اعرف شخصيتك وشخصية_الآخرين_#إليك
اعرف شخصيتك وشخصية_الآخرين_#إليكاعرف شخصيتك وشخصية_الآخرين_#إليك
اعرف شخصيتك وشخصية_الآخرين_#إليكHebah Toukhi
 
Bid robot DSP ru
Bid robot DSP ruBid robot DSP ru
Bid robot DSP ruDigitalBee
 
080429 PréSentation Projet EuropéEn E Sangathan Anpe Cadres
080429 PréSentation Projet EuropéEn E Sangathan Anpe Cadres080429 PréSentation Projet EuropéEn E Sangathan Anpe Cadres
080429 PréSentation Projet EuropéEn E Sangathan Anpe Cadresesangathan
 

En vedette (8)

Cómo defenderse del bullying
Cómo defenderse del bullyingCómo defenderse del bullying
Cómo defenderse del bullying
 
ITQAN Presentation - MEDIA.PPTX
ITQAN Presentation - MEDIA.PPTXITQAN Presentation - MEDIA.PPTX
ITQAN Presentation - MEDIA.PPTX
 
Em terra de google, quem tem tradutor é rei
Em terra de google, quem tem tradutor é reiEm terra de google, quem tem tradutor é rei
Em terra de google, quem tem tradutor é rei
 
Nestor resume
Nestor resumeNestor resume
Nestor resume
 
اعرف شخصيتك وشخصية_الآخرين_#إليك
اعرف شخصيتك وشخصية_الآخرين_#إليكاعرف شخصيتك وشخصية_الآخرين_#إليك
اعرف شخصيتك وشخصية_الآخرين_#إليك
 
Google Tag Manager для eCommerce
Google Tag Manager для eCommerceGoogle Tag Manager для eCommerce
Google Tag Manager для eCommerce
 
Bid robot DSP ru
Bid robot DSP ruBid robot DSP ru
Bid robot DSP ru
 
080429 PréSentation Projet EuropéEn E Sangathan Anpe Cadres
080429 PréSentation Projet EuropéEn E Sangathan Anpe Cadres080429 PréSentation Projet EuropéEn E Sangathan Anpe Cadres
080429 PréSentation Projet EuropéEn E Sangathan Anpe Cadres
 

Similaire à Slide 05 implementando o login , logout e flash data

PHP Aula 05 - E-mails, Cookies e Sessoes
PHP Aula 05 - E-mails, Cookies e SessoesPHP Aula 05 - E-mails, Cookies e Sessoes
PHP Aula 05 - E-mails, Cookies e SessoesDaniel Brandão
 
Slide 01 introdução ao php e ao code igniter
Slide 01   introdução ao php e ao code igniterSlide 01   introdução ao php e ao code igniter
Slide 01 introdução ao php e ao code igniterRaniere de Lima
 
Cobrancas online na sua aplicacao com MoIP
Cobrancas online na sua aplicacao com MoIPCobrancas online na sua aplicacao com MoIP
Cobrancas online na sua aplicacao com MoIPHerberth Amaral
 
Criando e alterando login - permissões no SQL Server 2008 R2
Criando e alterando login - permissões no SQL Server 2008 R2Criando e alterando login - permissões no SQL Server 2008 R2
Criando e alterando login - permissões no SQL Server 2008 R2Devmedia
 
Comet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoComet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoHanderson Frota
 
[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...
[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...
[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...Mayara Fernandes
 
Interfaces POO
Interfaces POOInterfaces POO
Interfaces POOPedro Neto
 
Contingência e Estratégias Para Criação de Novas Contas Sem Bloqueios 2.0.docx
Contingência e Estratégias Para Criação de Novas Contas Sem Bloqueios 2.0.docxContingência e Estratégias Para Criação de Novas Contas Sem Bloqueios 2.0.docx
Contingência e Estratégias Para Criação de Novas Contas Sem Bloqueios 2.0.docxMonetizando na web
 
Manual do sistema web de arrecadação da FETAEP
Manual do sistema web de arrecadação da FETAEPManual do sistema web de arrecadação da FETAEP
Manual do sistema web de arrecadação da FETAEPFETAEP
 
[TDC2015] De unitário a aceitação: Automação de testes com Codeception
[TDC2015] De unitário a aceitação: Automação de testes com Codeception[TDC2015] De unitário a aceitação: Automação de testes com Codeception
[TDC2015] De unitário a aceitação: Automação de testes com CodeceptionQualister
 
Novidades no Deployment do Office 365
Novidades no Deployment do Office 365Novidades no Deployment do Office 365
Novidades no Deployment do Office 365Bruno Lopes
 
Como criar um plugin sem ser desenvolvedor
Como criar um plugin sem ser desenvolvedorComo criar um plugin sem ser desenvolvedor
Como criar um plugin sem ser desenvolvedorMarcos Alexandre
 
Plano de teste sigcal
Plano de teste sigcalPlano de teste sigcal
Plano de teste sigcalcadeirudo
 
Designer Apresentação - Search Engine
Designer   Apresentação - Search EngineDesigner   Apresentação - Search Engine
Designer Apresentação - Search EngineCélio Azevedo
 
Manipulação de formulários com PHP. Uso de Cookies e Session com PHP.
Manipulação de formulários com PHP. Uso de Cookies e Session com PHP.Manipulação de formulários com PHP. Uso de Cookies e Session com PHP.
Manipulação de formulários com PHP. Uso de Cookies e Session com PHP.Leonardo Soares
 
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias RelacionadasAula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias RelacionadasCJR, UnB
 

Similaire à Slide 05 implementando o login , logout e flash data (20)

PHP Aula 05 - E-mails, Cookies e Sessoes
PHP Aula 05 - E-mails, Cookies e SessoesPHP Aula 05 - E-mails, Cookies e Sessoes
PHP Aula 05 - E-mails, Cookies e Sessoes
 
Php12
Php12Php12
Php12
 
Slide 01 introdução ao php e ao code igniter
Slide 01   introdução ao php e ao code igniterSlide 01   introdução ao php e ao code igniter
Slide 01 introdução ao php e ao code igniter
 
Cobrancas online na sua aplicacao com MoIP
Cobrancas online na sua aplicacao com MoIPCobrancas online na sua aplicacao com MoIP
Cobrancas online na sua aplicacao com MoIP
 
Criando e alterando login - permissões no SQL Server 2008 R2
Criando e alterando login - permissões no SQL Server 2008 R2Criando e alterando login - permissões no SQL Server 2008 R2
Criando e alterando login - permissões no SQL Server 2008 R2
 
Comet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoComet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - Resumo
 
[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...
[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...
[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...
 
Interfaces POO
Interfaces POOInterfaces POO
Interfaces POO
 
Versão 1.38
Versão 1.38Versão 1.38
Versão 1.38
 
Contingência e Estratégias Para Criação de Novas Contas Sem Bloqueios 2.0.docx
Contingência e Estratégias Para Criação de Novas Contas Sem Bloqueios 2.0.docxContingência e Estratégias Para Criação de Novas Contas Sem Bloqueios 2.0.docx
Contingência e Estratégias Para Criação de Novas Contas Sem Bloqueios 2.0.docx
 
Manual do sistema web de arrecadação da FETAEP
Manual do sistema web de arrecadação da FETAEPManual do sistema web de arrecadação da FETAEP
Manual do sistema web de arrecadação da FETAEP
 
Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
 
[TDC2015] De unitário a aceitação: Automação de testes com Codeception
[TDC2015] De unitário a aceitação: Automação de testes com Codeception[TDC2015] De unitário a aceitação: Automação de testes com Codeception
[TDC2015] De unitário a aceitação: Automação de testes com Codeception
 
Conectividade social pdf
Conectividade social pdfConectividade social pdf
Conectividade social pdf
 
Novidades no Deployment do Office 365
Novidades no Deployment do Office 365Novidades no Deployment do Office 365
Novidades no Deployment do Office 365
 
Como criar um plugin sem ser desenvolvedor
Como criar um plugin sem ser desenvolvedorComo criar um plugin sem ser desenvolvedor
Como criar um plugin sem ser desenvolvedor
 
Plano de teste sigcal
Plano de teste sigcalPlano de teste sigcal
Plano de teste sigcal
 
Designer Apresentação - Search Engine
Designer   Apresentação - Search EngineDesigner   Apresentação - Search Engine
Designer Apresentação - Search Engine
 
Manipulação de formulários com PHP. Uso de Cookies e Session com PHP.
Manipulação de formulários com PHP. Uso de Cookies e Session com PHP.Manipulação de formulários com PHP. Uso de Cookies e Session com PHP.
Manipulação de formulários com PHP. Uso de Cookies e Session com PHP.
 
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias RelacionadasAula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
 

Dernier

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 

Dernier (8)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

Slide 05 implementando o login , logout e flash data

  • 1. Implementando o Login e Logout Exibindo mensagens com o FlashData Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de Lima
  • 2. Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de Lima Implementando o Login e Logout
  • 3. Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de Lima Hoje nós iremos aprender a criar uma função de Login e Logout para os clientes no Mercado Online, e hoje nós faremos as seguintes configurações: • Criaremos um formulário para Login; • Criaremos a função de Login; • Aprenderemos a utilizar a Session; • Criaremos a função de Logout; • Aprenderemos a utilizar o Anchor; • Aprenderemos a utilizar o FlashData. • Exercício;
  • 4. Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de Lima Inicialmente para criar um sistema de login, precisaremos de alguns dados do cliente para autenticar, neste caso utilizaremos o E-mail e Senha para autenticar, precisaremos de um formulário de Login, e este formulário deve enviar as informações para um novo controller chamado login que terá apenas o método autenticar. Utilize o helper FORM para lhe auxiliar.
  • 5. Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de Lima No controller login, criaremos a função autentica e dentro desta função pegaremos o E-mail e Senha que o usuário informou, e consultaremos no nosso Banco de Dados para verificar se existe algum cadastro com o e-mail e senha informados. Para verificar criaremos uma função no Usuarios_model chamado autentica, que receberá o e-mail e senha. Lembre-se de transformar a senha em MD5.
  • 6. Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de Lima Nosso Controller deve estar semelhante a este:
  • 7. Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de Lima Agora vamos criar nossa função autentica no usuarios_model. Para criar essa função devemos receber como parâmetro um usuário, porém temos que verificar se o E-mail e senha estão no nosso banco de dados e depois retorna se achou ou se não achou, para verificar dados específicos em um Banco de dados precisamos utilizar um Where. Porém como fazer isso no CodeIgniter? Podemos fazer de duas maneiras simples. 1. Antes de consultar informa o Where; 2. Mudar nosso código para utilizar o get_where, que passamos a tabela e uma array com os dados do Where.
  • 8. Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de Lima 1. Informando o Where antes da consulta: public function autentica($usuario){ $this->db->where("email", $usuario["email"]); $this->db->where("senha", $usuario["senha"]); $usuario = $this->db->get("usuarios")->row_array(); return $usuario; }
  • 9. Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de Lima 2. Utilizando o get_where: public function autentica($usuario){ $usuario = $this->db->get_where("usuarios", array( "email"=>$usuario["email"], "senha"=>$usuario["senha"]) )->row_array(); return $usuario; }
  • 10. Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de Lima Agora nós temos nosso código que verifica se existe um usuário com o E-mail e Senha Informados. Porém, aonde vamos armazenar aquele resultado? Seria legal que depois que localizarmos um usuário criar uma sessão para ele, algo que só o usuário que eu acabei de achar e o servidor tivessem. No CodeIgniter existe uma função chamada userdata, que fica dentro da classe session, para adicionar um valor nesta função, utiliza o set_userdata, mas vamos passar uma Mensagem também, para deixar nosso código mais compreensível para o usuário, e depois Direcionaremos para uma view que exibirá está mensagem. Então nosso código irá ficar semelhante a este:
  • 11. Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de LimaRealize um teste, utilizando o seu usuário cadastrado.
  • 12. Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de Lima Só que quando vamos testar, ele já cai em um erro.
  • 13. Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de Lima Mas espera um momento, nós já vimos este erro em outro slide: A PHP Error was encountered Severity: Notice Message: Undefined property: Login::$session Filename: controllers/login.php Erro de propriedade indefinida? Neste caso, nossa propriedade está correta, mas porque não está carregando? Por um simples e pequeno motivo, esquecemos de carregar a library da session, mas a Session é algo muito importante para todo meu código e eu vou utilizar bastante ela. Então vamos voltar no AutoLoad, e além de carregar o database, iremos carregar a Session automaticamente.
  • 14. Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de Lima Mas se eu já fiz o login no sistema, não quero que apareça o formulário para fazer o login Ou o formulário de cadastro novamente, eu quero que apareça apenas os produtos. E se eu estou logado no sistema, eu também quero fazer o Logout. Vamos fazer uma parte de cada vez: 1. Alteraremos a index, para caso estejamos logados, não exibir os formulários; 2. Criar um botão para fazer o logout; 3. Melhorar a visualização da mensagem de “Logado com Sucesso” ou “Login ou Senha inválidas”;
  • 15. Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de Lima Começaremos com o mais fácil e rápido, vá na pasta Produtos e no arquivo Index.php, e antes de criar os formulários faça uma verificação utilizando um if. - Mas if o que? Se nós utilizamos o set_userdata, para atribuir um valor no userdata, vamos utiliza-lo Para verificar se existe algum valor “setado” ou não. Para realizar esta verificação fazemos: <?php if($this->session->userdata("usuario_logado")) : ?> E logo após criarmos o ultimo formulário, terminaremos o nosso if: <?php endif ?>
  • 16. Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de Lima Agora que fazemos uma verificação para ver se tem algum usuário ativo ou não no sistema, só que falto o botão de deslogar. Para criar este botão, utilizaremos um anchor, que recebe 3 parâmetros, o primeiro é qual a ação dele quando clicado, o segundo é o nome que será exibido e o terceiro é um array que contem as informações dele, como class, id, name e outras Tag de HTML.
  • 17. Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de Lima
  • 18. Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de Lima Nosso anchor direciona para o login/logout, porém ainda não criamos está função. Vamos no Controller Login e criaremos a função logout, que ela ira retirar o valor do login. public function logout(){ $this->session->unset_userdata("usuario_logado"); }
  • 19. Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de Lima Agora nós temos um sistema de Login e Logout de usuários, mas ainda falta melhorar na questão das mensagens, seria legal utilizar alguma função que exibisse a mensagem apenas uma vez e depois desaparecesse. Para isso nós temos a função flashdata, que recebe 2 parâmetros. O Primeiro parâmetro é o nome do flashdata e o segundo é a mensagem que dele. Vamos adicionar um valor no flashdata quando fazemos o login. Para isso retorne a função Autenticar e caso ele ache um usuário, adicione uma mensagem de: “Login realizado com sucesso” E depois, redirecione para a pagina inicial.
  • 20. Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de Lima
  • 21. Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de Lima Depois de ter criado a mensagem, vamos exibi-la. Vá na pasta Produtos e abra o arquivo Index, e antes da tag h1 Produtos, verifique se tem algum flashdata do tipo “success”, e se tiver vamos exibi-lo.
  • 22. Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de Lima Este é o código que deve ser adicionado na Index: <?php if($this->session->flashdata("success")) : ?> <p style="text-align:center;" class="alert alert-success"> <?= $this->session->flashdata("success"); ?> </p> <?php endif ?> Agora temos uma index mais bonita e com uma mensagem mais agradavel.
  • 23. Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de Lima Exercicio
  • 24. Implementando o Login e Logout Exibindo mensagens com o FlashData Criado por: Raniere de Lima Crie um flashdata para caso o login ou senha estiverem erradas, e para quando o Logout for realizado.