WAMP
Aula 12 – PHP
Sistema de Autenticação de
Usuários
      Windows, Apache, MySQL e PHP
Nessa Aula Veremos

 PHP com Banco de Dados MySQL
  Conhecendo e o PHPMyAdmin
  Conectando com um Banco de Dados.
  Executando consultas MySql em um programa
  PHP.
  Exibindo resultados dos comandos MySQL.
  Criando um Sistema de Autenticação usando
  cookies e sessões.
PHP e Banco de Dados

 O PHP possui funções que trabalham com
 diretamente com o PostgreSQL, MySql e
 outras com SQLite.
 Nosso foco será no MySql.
PHPMyAdmin

 phpMyAdmin é um programa desenvolvido
 em PHP para administração do MySQL pela
 Internet.
 A partir deste sistema é possível:
  criar e remover bases de dados,
  criar, remover e alterar tabelas,
  inserir, remover e editar campos,
  executar códigos SQL e
  manipular campos chaves.
Junto com o Easyphp

 Para acessá-lo basta digita no navegador:
Criando um Banco de Dados

 Vamos Criar um Controle de Acesso ao Banco de
 Dados. – Usaremos o PHPMyAdmin
   1) Inicialmente Criaremos um Banco Chamado escola.
   2) Depois criaremos a tabela chamada usuarios. “sem
   acento” (Cadastro de Usuários).
   3) Criaremos os campos:
     nome, login e senha.
   4) Adionaremos dados
 A idéia depois é criar um sistema de Login ao
 sistema em php.
Criando o Banco de Dados
                 Banco: escola

         usuarios
                               tabela
         nome
         login
         senha




                    Tabela n
Passo a Passo 1

                  Clique em Banco de
                  Dados.
Passo a Passo 2

                  Dê o nome escola e
                  clique em Cria.
Passo a Passo 3

                  Selecione o novo
                  Banco no menu a
                  Esquerda
Passo a Passo 4

                  Digite o nome da tabela
                  usuario e o número de
                  campos: 3.
Passo a Passo 5

                  Defina os campos e
                  Execute e salve
Passo a Passo 6

 Cadastrando usuários: Clique na tabela a esquerda
 no menu. E depois na opção inserir.

                                                     2




          1
Passo a Passo 7




  Cadastre pelo menos mais UM
Voltando ao PHP


   Criando Sistema de Login
Arquivo de conexão:
conecta_mysql.inc
 1) Crie uma subpasta em www chamada
 login. Salve os próximos arquivos nessa
 pasta.
Tela de Login – arquivo:
login.html




                txtUsuario

                txtSenha




              <form method="POST" action="login.php">
Arquivo Login.php

 Esse arquivo:
  1º.verifica se o usuário está cadastrado;
  2º. Se a senha está correta para posteriormente
  criar os cookies.
  3º. Se usuário e senhas estiverem incorretos, é
  informado ao usuário e a não cria-se os cookies.
 Falaremos dos cookies, logo a seguir.
Página de Destino: escola.php

 Crie o arquivo e salve como escola.php
Arquivo: login.php - Tela 1
Arquivo: login.php - Tela 2
Comentando: mysql_connect( )

 mysql_connect() estabelece uma conexão com o
 servidor MySQL.
 Os seguintes padrões são assumidos para os
 argumentos opcionais que estiverem faltando:
     server = 'localhost:3306',
     username = nome do usuário dono do processo do servidor,
     password = senha vazia.
     Exemplo:
Comentando: mysql_select_db

 mysql_select_db(banco)
  Seleciona um banco de dados MySQL
  Exemplo:




                          Nossa Variável que representa o
                          Banco de Dados
Comentando o Arquivo: login.php

  mysql_query()
     Envia uma query para o banco de dados ativo no
     servidor da conexão informada em link_identifier.
     Se o parâmetro link_identifier não é especificado,
     a ultima conexão aberta é usada.


$resultado= mysql_query("SELECT * FROM usuarios WHERE
login='$usuario'");
Comentando o Arquivo: login.php

  mysql_num_rows()
     Retorna o número de linhas em um resultado.
     Este comando é valido apenas para o SELECT.




$linhas = mysql_num_rows($resultado);
Comentando o Arquivo: login.php

   mysql_result()
     Retorna o conteúdo de uma célula do resultado
     MySQL.
     O argumento field(campo) pode ser o índice do
     campo, o nome do campo, o a tabela ponto o
     nome do campo(tabela.campo).




if($senha!=mysql_result($resultado,0,"senha"))
Cookies


   O que são Cookies e como funcionam.
Cookies

 É um arquivo-texto que podemos armazenar
 no computador do usuário, para ser
 recuperado posteriormente pelo servidor.
 Cookie é formando no mínimo pelo par:
  Nome, valor.
  Exemplo:
Função setcookie( )
  setcookie() define um cookie para ser enviado junto
  com o resto dos cabeçalhos HTTP.
Parâmetro   Descrição
Nome        O nome do cookie.
            O valor do cookie. Se não for informado, o servidor tentará
Valor
            excluir o cookie com o nome informado.
            O tempo para o cookie expirar. Este é um timestamp Unix
Validade
            (número de segundos após 1/1/1970 às 0:00 horas).
Caminho     O caminho no servidor para qual o cookie estará disponível.
Domínio     O domínio que o cookie estará disponível.
            Indica que o cookie deve ser transmitido sobre uma conexão
Seguro      segura HTTPS. Quando for definido como 1, o cookie só será
            definido se existir uma conexão segura. O padrão é 0.
Função: Header

 header()
  É usada para enviar diretamete cabeçalhos HTTP
  headers.
Testando

 Se testarmos a aplicação teremos três ocorrências
 possíveis:
   1) Usuário não cadastrado;
   2) Usuário cadastrado e senha inválida;
   3) Acesso com sucesso.
 No caso 3, será redirecionado para o arquivo
 escola.php. Aqui seria interessante:
   1) Criar uma rotina de validação para ser utilizada nas
   partes restritas, impedindo também que qualquer usuário
   não autorizado digite o nome da página direto no
   webbrowser e tenha o acesso direto a páginas restritas.
   2) criar uma página de logout para os usuários que estão
   autenticados.
Validando cookies

 Depois de feito o login, os cookies já foram
 armazenados na máquina dele.
 Agora cada página que for acessar devemos
 validar se os cookies existem e se estão com
 informações corretas.
 Fazemos isso para evitar que o usuário digite
 diretamente o endereço de uma página sem
 passar pelo login.
Como validar cookies

 1º. Passo    Criar uma rotina
 valida_cookies.inc.
  Nessa rotina faremos os testes necessários
  através da função IsSet do PHP.
  É recomendável fazer esse teste para evitar que
  o PHP exiba alguma mensagem de erro ao
  tentarmos acessar um elemento que não existe
  no array global $_COOKIE.
Arquivo valida_cookie.inc (1/2)
Arquivo valida_cookie.inc (2/2)
Função IsSet

 A função IsSet()
   Informa se uma variável foi e criada e recebeu um
   valor.
   IsSet() só trabalha com variáveis, qualquer outra coisa
   passada como parâmetro resultará em um erro de
   sintaxe. No nosso exemplo, informa se o arrays
   globais Cookies (nome_usuario e senha_usuario):
Para uso:

 Agora todas as páginas restritas no seu início
 inclua a proteção de validação de cookie.
 No nosso caso só temos uma, escola.php.
 Abra esse arquivo e inclua a linha abaixo:
Logout: Arquivo logout.php

 O programa logout.php exclui os cookies
 criados no momento do login.
 No exemplo abaixo, ainda encaminhamos o
 usuário para a página de login inicial.
Altere novamente o Arquivo: escola.php

 Vamos acrescentar um link para logout e o
 nome do usuário logado no sistema.
Sessões


    O que são e como funcionam.
Sessão

 Período de tempo durante o qual o usuário
 navega pelas páginas do site.
 Quando o usuário entrar no site podemos
 abrir uma sessão e nela registrar variáveis,
 que ficarão gravadas no servidor e poderão
 ser acessadas em qualquer página do site,
 enquanto a seção estiver aberta.
Identificação da Seção

 Cada sessão tem um número identificador
 único (session id).
 Uma página para ter acesso aos dados da
 sessão precisa conhecer esse identificador.
Exemplos de uso

 Sites comerciais:
   Carrinho de compra, opções de escolha.
 Sites institucionais:
   Dados consultados recentemente.
Nossa meta

 Vamos alterar nosso sistema de login e
 senha apresentado no tópico cookies, para
 que ele passe a utilizar sessões.
 Para isso serão necessárias apenas algumas
 modificações nos arquivos login, validação e
 logout.
Arquivo: login.php

 Ao invés de criar dois cookies no momento do login.
 Deveriam ser registradas duas variáveis de sessão.



                     Troque por
Arquivo: valida_cookies.inc

 Na etapa de validação, deveremos verificar
 as variáveis de sessão e não mais os
 cookies.



                 Troque por
Ainda no Arquivo: valida_cookies.php

 Outra parte que deve ser alterada é a exclusão dos
 cookies. No caso das sessões, isso equivale a
 eliminar as variáveis de sessão (nome_usuario e
 senha_usuario).



                    Troque por
Finalmente

 Devemos alterar a rotina de saída do usuário
 (logout.php), fazendo o uso da função
 session_destroy( ).
 Essa função elimina todos os dados de uma
 sessão.
 Para liberar o espaço alocado para as
 variáveis ainda é necessário iniciar o array
 $_SESSION. Atribua um array vazio.
 Altere o programa logout.php conforme
 próximo slide.
Arquivo: logout.php e escola.php
    Devem ficar assim:

logout.php




 escola.php
Altere o arquivo escola.php para que fique
como abaixo:
Obrigado


   Maromo

Php12

  • 1.
    WAMP Aula 12 –PHP Sistema de Autenticação de Usuários Windows, Apache, MySQL e PHP
  • 2.
    Nessa Aula Veremos PHP com Banco de Dados MySQL Conhecendo e o PHPMyAdmin Conectando com um Banco de Dados. Executando consultas MySql em um programa PHP. Exibindo resultados dos comandos MySQL. Criando um Sistema de Autenticação usando cookies e sessões.
  • 3.
    PHP e Bancode Dados O PHP possui funções que trabalham com diretamente com o PostgreSQL, MySql e outras com SQLite. Nosso foco será no MySql.
  • 4.
    PHPMyAdmin phpMyAdmin éum programa desenvolvido em PHP para administração do MySQL pela Internet. A partir deste sistema é possível: criar e remover bases de dados, criar, remover e alterar tabelas, inserir, remover e editar campos, executar códigos SQL e manipular campos chaves.
  • 5.
    Junto com oEasyphp Para acessá-lo basta digita no navegador:
  • 6.
    Criando um Bancode Dados Vamos Criar um Controle de Acesso ao Banco de Dados. – Usaremos o PHPMyAdmin 1) Inicialmente Criaremos um Banco Chamado escola. 2) Depois criaremos a tabela chamada usuarios. “sem acento” (Cadastro de Usuários). 3) Criaremos os campos: nome, login e senha. 4) Adionaremos dados A idéia depois é criar um sistema de Login ao sistema em php.
  • 7.
    Criando o Bancode Dados Banco: escola usuarios tabela nome login senha Tabela n
  • 8.
    Passo a Passo1 Clique em Banco de Dados.
  • 9.
    Passo a Passo2 Dê o nome escola e clique em Cria.
  • 10.
    Passo a Passo3 Selecione o novo Banco no menu a Esquerda
  • 11.
    Passo a Passo4 Digite o nome da tabela usuario e o número de campos: 3.
  • 12.
    Passo a Passo5 Defina os campos e Execute e salve
  • 13.
    Passo a Passo6 Cadastrando usuários: Clique na tabela a esquerda no menu. E depois na opção inserir. 2 1
  • 14.
    Passo a Passo7 Cadastre pelo menos mais UM
  • 15.
    Voltando ao PHP Criando Sistema de Login
  • 16.
    Arquivo de conexão: conecta_mysql.inc 1) Crie uma subpasta em www chamada login. Salve os próximos arquivos nessa pasta.
  • 17.
    Tela de Login– arquivo: login.html txtUsuario txtSenha <form method="POST" action="login.php">
  • 18.
    Arquivo Login.php Essearquivo: 1º.verifica se o usuário está cadastrado; 2º. Se a senha está correta para posteriormente criar os cookies. 3º. Se usuário e senhas estiverem incorretos, é informado ao usuário e a não cria-se os cookies. Falaremos dos cookies, logo a seguir.
  • 19.
    Página de Destino:escola.php Crie o arquivo e salve como escola.php
  • 20.
  • 21.
  • 22.
    Comentando: mysql_connect( ) mysql_connect() estabelece uma conexão com o servidor MySQL. Os seguintes padrões são assumidos para os argumentos opcionais que estiverem faltando: server = 'localhost:3306', username = nome do usuário dono do processo do servidor, password = senha vazia. Exemplo:
  • 23.
    Comentando: mysql_select_db mysql_select_db(banco) Seleciona um banco de dados MySQL Exemplo: Nossa Variável que representa o Banco de Dados
  • 24.
    Comentando o Arquivo:login.php mysql_query() Envia uma query para o banco de dados ativo no servidor da conexão informada em link_identifier. Se o parâmetro link_identifier não é especificado, a ultima conexão aberta é usada. $resultado= mysql_query("SELECT * FROM usuarios WHERE login='$usuario'");
  • 25.
    Comentando o Arquivo:login.php mysql_num_rows() Retorna o número de linhas em um resultado. Este comando é valido apenas para o SELECT. $linhas = mysql_num_rows($resultado);
  • 26.
    Comentando o Arquivo:login.php mysql_result() Retorna o conteúdo de uma célula do resultado MySQL. O argumento field(campo) pode ser o índice do campo, o nome do campo, o a tabela ponto o nome do campo(tabela.campo). if($senha!=mysql_result($resultado,0,"senha"))
  • 27.
    Cookies O que são Cookies e como funcionam.
  • 28.
    Cookies É umarquivo-texto que podemos armazenar no computador do usuário, para ser recuperado posteriormente pelo servidor. Cookie é formando no mínimo pelo par: Nome, valor. Exemplo:
  • 29.
    Função setcookie( ) setcookie() define um cookie para ser enviado junto com o resto dos cabeçalhos HTTP. Parâmetro Descrição Nome O nome do cookie. O valor do cookie. Se não for informado, o servidor tentará Valor excluir o cookie com o nome informado. O tempo para o cookie expirar. Este é um timestamp Unix Validade (número de segundos após 1/1/1970 às 0:00 horas). Caminho O caminho no servidor para qual o cookie estará disponível. Domínio O domínio que o cookie estará disponível. Indica que o cookie deve ser transmitido sobre uma conexão Seguro segura HTTPS. Quando for definido como 1, o cookie só será definido se existir uma conexão segura. O padrão é 0.
  • 30.
    Função: Header header() É usada para enviar diretamete cabeçalhos HTTP headers.
  • 31.
    Testando Se testarmosa aplicação teremos três ocorrências possíveis: 1) Usuário não cadastrado; 2) Usuário cadastrado e senha inválida; 3) Acesso com sucesso. No caso 3, será redirecionado para o arquivo escola.php. Aqui seria interessante: 1) Criar uma rotina de validação para ser utilizada nas partes restritas, impedindo também que qualquer usuário não autorizado digite o nome da página direto no webbrowser e tenha o acesso direto a páginas restritas. 2) criar uma página de logout para os usuários que estão autenticados.
  • 32.
    Validando cookies Depoisde feito o login, os cookies já foram armazenados na máquina dele. Agora cada página que for acessar devemos validar se os cookies existem e se estão com informações corretas. Fazemos isso para evitar que o usuário digite diretamente o endereço de uma página sem passar pelo login.
  • 33.
    Como validar cookies 1º. Passo Criar uma rotina valida_cookies.inc. Nessa rotina faremos os testes necessários através da função IsSet do PHP. É recomendável fazer esse teste para evitar que o PHP exiba alguma mensagem de erro ao tentarmos acessar um elemento que não existe no array global $_COOKIE.
  • 34.
  • 35.
  • 36.
    Função IsSet Afunção IsSet() Informa se uma variável foi e criada e recebeu um valor. IsSet() só trabalha com variáveis, qualquer outra coisa passada como parâmetro resultará em um erro de sintaxe. No nosso exemplo, informa se o arrays globais Cookies (nome_usuario e senha_usuario):
  • 37.
    Para uso: Agoratodas as páginas restritas no seu início inclua a proteção de validação de cookie. No nosso caso só temos uma, escola.php. Abra esse arquivo e inclua a linha abaixo:
  • 38.
    Logout: Arquivo logout.php O programa logout.php exclui os cookies criados no momento do login. No exemplo abaixo, ainda encaminhamos o usuário para a página de login inicial.
  • 39.
    Altere novamente oArquivo: escola.php Vamos acrescentar um link para logout e o nome do usuário logado no sistema.
  • 40.
    Sessões O que são e como funcionam.
  • 41.
    Sessão Período detempo durante o qual o usuário navega pelas páginas do site. Quando o usuário entrar no site podemos abrir uma sessão e nela registrar variáveis, que ficarão gravadas no servidor e poderão ser acessadas em qualquer página do site, enquanto a seção estiver aberta.
  • 42.
    Identificação da Seção Cada sessão tem um número identificador único (session id). Uma página para ter acesso aos dados da sessão precisa conhecer esse identificador.
  • 43.
    Exemplos de uso Sites comerciais: Carrinho de compra, opções de escolha. Sites institucionais: Dados consultados recentemente.
  • 44.
    Nossa meta Vamosalterar nosso sistema de login e senha apresentado no tópico cookies, para que ele passe a utilizar sessões. Para isso serão necessárias apenas algumas modificações nos arquivos login, validação e logout.
  • 45.
    Arquivo: login.php Aoinvés de criar dois cookies no momento do login. Deveriam ser registradas duas variáveis de sessão. Troque por
  • 46.
    Arquivo: valida_cookies.inc Naetapa de validação, deveremos verificar as variáveis de sessão e não mais os cookies. Troque por
  • 47.
    Ainda no Arquivo:valida_cookies.php Outra parte que deve ser alterada é a exclusão dos cookies. No caso das sessões, isso equivale a eliminar as variáveis de sessão (nome_usuario e senha_usuario). Troque por
  • 48.
    Finalmente Devemos alterara rotina de saída do usuário (logout.php), fazendo o uso da função session_destroy( ). Essa função elimina todos os dados de uma sessão. Para liberar o espaço alocado para as variáveis ainda é necessário iniciar o array $_SESSION. Atribua um array vazio. Altere o programa logout.php conforme próximo slide.
  • 49.
    Arquivo: logout.php eescola.php Devem ficar assim: logout.php escola.php
  • 50.
    Altere o arquivoescola.php para que fique como abaixo:
  • 51.
    Obrigado Maromo