php12
DESCRIPTION
CURSO PHPTRANSCRIPT
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
usuarios
nomeloginsenha
tabela
Tabela n
Banco: escola
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.
1
2
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 WHERElogin='$usuario'");
� mysql_num_rows()
� Retorna o número de linhas em um resultado. Este comando é valido apenas para o SELECT.
Comentando o Arquivo: login.php
$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.
Indica que o cookie deve ser transmitido sobre uma conexão segura HTTPS. Quando for definido como 1, o cookie só serádefinido se existir uma conexão segura. O padrão é 0.
Seguro
O domínio que o cookie estará disponível. Domínio
O caminho no servidor para qual o cookie estará disponível. Caminho
O tempo para o cookie expirar. Este é um timestamp Unix (número de segundos após 1/1/1970 às 0:00 horas).
Validade
O valor do cookie. Se não for informado, o servidor tentaráexcluir o cookie com o nome informado.
Valor
O nome do cookie. Nome
DescriçãoParâmetro
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 arraysglobais 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 cookiescriados 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