SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Programação para WEB
•Regis Pires Magalhães
•regispiresmag@gmail.com
PHP:
Sessões, Cookies,
Cabeçalhos HTTP,
Autenticação e Autorização
Sessões

Permitem armazenar informações importantes do usuário do
site e acessá-las em qualquer página por determinado
período de tempo.

Servem para armazenamento de dados no servidor.

Pode ser importante armazenar as informações do usuário,
como sua identificação de login, seu carrinho de compras,
produtos visitados, etc.

Um arquivo no servidor é criado por padrão no diretório
temporário, com o nome do arquivo iniciando por “sess_” e
seguido do ID da sessão:

Arquivo: sess_4e2eca1a2b20237ce861d690c68294cf

Caminho: C:xampptmp

No Ubuntu: /var/lib/php5/
ID de Sessão

Há 2 formas de passar o ID de sessão para o servidor:

Via Cookie (Recomendada)

Via parâmetro de URL (só em último caso – cookies
desabilitados no navegador)

O ID de sessão é inserido diretamente na URL.
ID de Sessão via Cookie

Ao fazer uso de sessão em PHP, um cookie chamado
PHPSESSID (identificador de sessão do PHP) é
automaticamente criado no navegador para identificar que
sessão está sendo usada no servidor. Este cookie é
automaticamente excluído quando o navegador for fechado.
Iniciando uma Sessão

Para iniciar uma nova sessão ou para abrir uma sessão já
iniciada, deve-se usar a função session_start().

session_start() OBRIGATORIAMENTE deve vir antes de
qualquer saída HTML.
Armazenando algo na Sessão

Opções:

Via variável $_SESSION

Via função session_register()
Armazenando algo na Sessão
<?php
session_start();
$variavel_01 = "Programação";
$variavel_02 = "para WEB";
session_register('variavel_01');
$_SESSION['variavel_02'] = $variavel_02;
?>
<html>
<head>
<title>CEFET-PI PHB</title>
</head>
<body>
<p>Informações sobre a sessão:</p>
<?php
echo '<p>Session ID: '.session_id().'</p>';
print_r($_SESSION);
?>
</p>
</body>
</html>
Eliminando algo da Sessão

session_unregister()

Elimina uma determinada variável da sessão.

session_unset()

Elimina todas as variáveis da sessão.
Tempo de vida da Sessão

session_cache_expire()

Retorna o tempo de expiração das sessões ou
define novo tempo de expiração em minutos.

Para redefinir o tempo de expiração, deve ser
executada antes de session_start().

Tempo padrão de duração da sessão: 180
minutos

Para alterar o tempo padrão, deve-se chamar
session_cache_expire() a cada página que faça
uso da sessão.
Destruindo uma Sessão

A destruição da sessão é feita através da
função session_destroy().

Antes de chamar a função session_destroy(),
deve-se primeiro abrir a sessão com
session_start().

Essa função é normalmente utilizada quando
um usuário requisita sua saída da aplicação
(logout).
Cookie

É uma pequena quantidade de informação armazenada na
máquina cliente que possibilita a identificação de informações
dos usuários que acessam o servidor.

Pode estar na memória do navegador ou armazenada no disco.

Contém um par: chave, valor.

Usar com moderação.

O uso de cookies pode permitir que o usuário após ter se
autenticado, desligue o computador, acesse o site um tempo
depois e não precise se autenticar novamente. Ex: GMail,
Hotmail, Yahoo, etc.

Para utilizar esse recurso, o usuário aceita a opção “salvar as
minhas informações neste computador”.
Informações contidas em um Cookie

Nome: PHPSESSID

Valor: 4e2eca1a2b20237ce861d690c68294cf

Servidor: localhost

Caminho: /

Enviar: em todos os tipos
de conexão

Validade: até sair do Firefox
Cookie

Os cookies são uma parte do cabeçalho HTTP, logo a
função setcookie() precisa ser chamada antes que
qualquer outro dado seja enviado ao navegador.

Qualquer cookie enviado para o cliente
automaticamente será incluido no array $_COOKIE.

Para armazenar um array em cookies, acrescente [] ao
nome do cookie.
Adicionando Cookies
<?php
/* dura até o fechamento do browser */
setcookie('meu_cookie1', 'PHP');
/* dura 1 hora */
setcookie('meu_cookie2', 'WEB', time()+3600);
/* dura 1 hora */
setcookie('meu_cookie3', 'NOW', time()+3600,
'/regis/', '');
?>
Usando Cookies
<?php
echo 'meu_cookie1: ';
echo $_COOKIE['meu_cookie1'].'<br/>';
echo 'meu_cookie2: ';
echo $_COOKIE['meu_cookie2'].'<br/>';
echo 'meu_cookie3: ';
echo $_COOKIE['meu_cookie3'].'<br/>';
print_r($_COOKIE);
?>
Removendo Cookies
<?php
// configurar valor com string vazia
setcookie ('meu_cookie1', '');
setcookie ('meu_cookie2', '');
// configurar a data de expiração para o passado
setcookie ('meu_cookie3', '', time() - 3600);
?>
Adicionando Array em Cookies
<?php
setcookie('pessoa[0]', 'Maria');
setcookie('pessoa[1]', 'João');
setcookie('pessoa[2]', 'José');
?>
Contador (Session)
<?php
session_start();
$_SESSION['contador_session']++;
?>
<html>
<head>
<title>Contador</title>
</head>
<body>
<p>Contador Session:
<?php echo $_SESSION['contador_session'] ?></p>
</body>
</html>
Contador (Cookie)
<?php
setcookie('contador_cookie',
$_COOKIE['contador_cookie'] + 1);
?>
<html>
<head>
<title>Contador</title>
</head>
<body>
<p>Contador Cookie:
<?php echo $_COOKIE['contador_cookie'] ?></p>
</body>
</html>
Inserindo itens em um array – usando Session
<?php
session_start();
if (strlen(trim($_POST['nome'])) > 0) {
if (gettype($_SESSION['nomes']) == 'array') {
array_push($_SESSION['nomes'], $_POST['nome']);
} else {
$_SESSION['nomes'] = array($_POST['nome']);
}
}
?>
<html>
<head><title>Array usando Session</title></head>
<body>
<form action="session_array.php" method="post">
<p>Nome: <input name="nome" type="text"/></p>
<input type="submit" value="Inserir Nome"/>
</form>
<?php
if (isset($_SESSION['nomes'])) {
echo '<p>Nomes inseridos na sessão:</p>';
foreach ($_SESSION['nomes'] as $item) {
echo $item.'<br/>';
}
}
?>
</body>
</html>
Inserindo itens em um array – usando Cookies
<?php
if (strlen(trim($_POST['nome'])) > 0) {
$tamanho = count($_COOKIE['nomes']);
setcookie("nomes[$tamanho]", $_POST['nome']);
}
?>
<html>
<head><title>Array usando Cookies</title></head>
<body>
<form action="cookies_array.php" method="post">
<p>Nome: <input name="nome" type="text"/></p>
<input type="submit" value="Inserir Nome"/>
</form>
<?php
if (isset($_COOKIE['nomes'])) {
echo '<p>Nomes inseridos no cookie:</p>';
foreach ($_COOKIE['nomes'] as $item) {
echo $item.'<br/>';
}
echo $_POST['nome'].'<br/>';
}
?>
</body>
</html>
Cabeçalhos HTTP

Redirecionamento de página

A função exit interrompe a execução do script e pode
mostrar uma mensagem.
<?php
header('Location: http://localhost/xampp');
exit;
?>
<?php
$servidor = 'http://' . $_SERVER['HTTP_HOST'];
header('Location: ' . $servidor . '/xampp/');
exit;
?>
Redirecionamento via HTML
<html>
<head>
<meta http-equiv="refresh"
content="0;url=http://localhost/xampp/" />
</head>
<body>
<p>Redirecionando...</p>
</body>
</html>
Itens via Cookies - Exibição
<!-- array_cookies.php -->
<html>
<head><title>Array usando Cookies</title></head>
<body>
<form action="array_cookies_processa.php" method="post">
<p>Nome: <input name="nome" type="text"/></p>
<input type="submit" value="Inserir Nome"/>
</form>
<?php
if (isset($_COOKIE['nomes'])) {
echo '<p>Nomes inseridos no cookie:</p>';
$i = 1;
foreach ($_COOKIE['nomes'] as $item) {
echo "$i. $item <a
href="array_cookies_processa.php? remover=$item">
Remover</a><br/>";
$i++;
}
}
?>
</body>
</html>
Itens via Cookies - Processamento
<!-- array_cookies_processa.php -->
<?php
if (isset($_GET[remover])) {
$posicao = array_search($_GET[remover], $_COOKIE['nomes']);
setcookie("nomes[$posicao]", '');
header('Location: array_cookies.php');
exit;
} else if (strlen(trim($_POST['nome'])) > 0) {
end($_COOKIE['nomes']);
$pos_final = key($_COOKIE['nomes']) + 1;
setcookie("nomes[$pos_final]", $_POST['nome']);
header('Location: array_cookies.php');
exit;
}
?>
Autenticação e Autorização

Autenticação

É o processo de identificação dos usuários do
aplicativo.

Normalmente essa identificação é determinada pelo
par usuário e senha, mas também pode ser feita
através de biometria, etc.

Autorização

Controla as permissões de acesso de usuários
autenticados a recursos do sistema.

Determina se um usuário autenticado pode ou não
acessar um determinado recurso.
Autenticação HTTP

O protocolo HTTP permite o pedido de usuário e
senha via janela pop-up.

Isso é feito através do cabeçalho WWW-
Authenticate.

Após a autenticação, as seguintes variáveis são
criadas:

$_SERVER['PHP_AUTH_USER'] – Usuário

$_SERVER['PHP_AUTH_PW'] – Senha

$_SERVER['PHP_AUTH_TYPE'] – Basic
Autenticação HTTP
<?php
function authenticate() {
header('WWW-Authenticate: Basic realm="Login"');
header('HTTP/1.0 401 Unauthorized');
echo 'Usuário ou senha invalido(s).';
exit;
}
if (!isset($_SERVER['PHP_AUTH_USER'])) {
authenticate();
}
if ($_SERVER['PHP_AUTH_USER'] != 'regis' ||
$_SERVER['PHP_AUTH_PW'] != '1234') {
authenticate();
}
?>
<html>
<head><title>Página inicial</title></head>
<body>
<p>Bem-vindo ao nosso site!!!</p>
</body>
</html>
Autenticação – index.php
<?php
session_start();
$usuario = $_SESSION[usuario];
?>
<html>
<head>
<meta http-equiv="content-type"
content="text/html;charset=UTF-8" />
<title>Página inicial</title>
</head>
<body>
<h1>Nossa aplicação</h1>
<?php if ($usuario) { ?>
<p><?php echo $usuario; ?>, seja bem-vindo ao nosso
site. Clique <a href="sair.php">aqui</a>
para sair.</p>
<?php } else { ?>
<p>É necessário fazer <a href="login.php">Login
</a> para acessar o sistema.</p>
<?php } ?>
</body>
</html>
Autenticação – login.php
<?php
session_start();
$usuario = $_POST[usuario];
$senha = $_POST[senha];
if ($usuario == 'regis' && $senha == '12345') {
$_SESSION[usuario] = $usuario;
header('Location: index.php');
exit;
} else {
if ($usuario && $senha)
$mensagem = 'Usuário e/ou senha inválido(s). Tente novamente...';
}
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<title>Página de Login</title>
</head>
<body>
<h1>Login</h1>
<?php if ($mensagem) {
echo "<p>$mensagem</p>";
} ?>
<form action="login.php" method="POST">
<p>Usuário: <input type="text" name="usuario" /></p>
<p>Senha: <input type="password" name="senha" /></p>
<p><input type="submit" />
</form>
</body>
</html>
Autenticação – sair.php
<?php
session_start();
session_destroy();
header('Location: index.php');
?>

Weitere ähnliche Inhalte

Was ist angesagt?

Roteiro de aula montagem e manutenção 2012
Roteiro de aula montagem e manutenção 2012Roteiro de aula montagem e manutenção 2012
Roteiro de aula montagem e manutenção 2012
Carlos Melo
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
Armando Daniel
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
Maurício Linhares
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
Armando Daniel
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Adriano Teixeira de Souza
 

Was ist angesagt? (20)

Roteiro de aula montagem e manutenção 2012
Roteiro de aula montagem e manutenção 2012Roteiro de aula montagem e manutenção 2012
Roteiro de aula montagem e manutenção 2012
 
POO - Aula 1
POO - Aula 1POO - Aula 1
POO - Aula 1
 
jQuery na Prática!
jQuery na Prática!jQuery na Prática!
jQuery na Prática!
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
Introdução a testes unitários com jUnit
Introdução a testes unitários com jUnitIntrodução a testes unitários com jUnit
Introdução a testes unitários com jUnit
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
 
Linguagem Java
Linguagem JavaLinguagem Java
Linguagem Java
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
 
RichFaces 4: Rich Ajax Components For Your JSF Applications
RichFaces 4: Rich Ajax Components For Your JSF ApplicationsRichFaces 4: Rich Ajax Components For Your JSF Applications
RichFaces 4: Rich Ajax Components For Your JSF Applications
 
[Curso Java Basico] Aula 23: Como debugar no Netbeans
[Curso Java Basico] Aula 23: Como debugar no Netbeans[Curso Java Basico] Aula 23: Como debugar no Netbeans
[Curso Java Basico] Aula 23: Como debugar no Netbeans
 
Node.js e Express
Node.js e ExpressNode.js e Express
Node.js e Express
 
Estrutura da Internet
Estrutura da InternetEstrutura da Internet
Estrutura da Internet
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring Framework
 
Caderno de exercícios cobol
Caderno de exercícios   cobolCaderno de exercícios   cobol
Caderno de exercícios cobol
 
Aula 4 – conceitos e tecnologias internet e intranet
Aula 4 – conceitos e tecnologias   internet e intranetAula 4 – conceitos e tecnologias   internet e intranet
Aula 4 – conceitos e tecnologias internet e intranet
 
Cookies e Sessões e PHP
Cookies e Sessões e PHPCookies e Sessões e PHP
Cookies e Sessões e PHP
 
[D2 오픈세미나]3.web view hybridapp
[D2 오픈세미나]3.web view hybridapp[D2 오픈세미나]3.web view hybridapp
[D2 오픈세미나]3.web view hybridapp
 
Descrição formal de Casos de Uso
Descrição formal de Casos de UsoDescrição formal de Casos de Uso
Descrição formal de Casos de Uso
 

Andere mochten auch

Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_web
Regis Magalhães
 
Java 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral DetalhadoJava 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral Detalhado
Regis Magalhães
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
Regis Magalhães
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducao
Regis Magalhães
 
Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011
Regis Magalhães
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Adriano Teixeira de Souza
 

Andere mochten auch (20)

Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_web
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 
Java 15 Jar
Java 15 JarJava 15 Jar
Java 15 Jar
 
Prog web 07-pdo
Prog web 07-pdoProg web 07-pdo
Prog web 07-pdo
 
Pascal Tipos
Pascal TiposPascal Tipos
Pascal Tipos
 
Java 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral DetalhadoJava 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral Detalhado
 
Prog web 06-php-oo
Prog web 06-php-ooProg web 06-php-oo
Prog web 06-php-oo
 
Java 14 Javadoc
Java 14 JavadocJava 14 Javadoc
Java 14 Javadoc
 
Easy Rails
Easy RailsEasy Rails
Easy Rails
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducao
 
Coding Dojo
Coding DojoCoding Dojo
Coding Dojo
 
Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011
 
Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011
 
Curso Ruby
Curso RubyCurso Ruby
Curso Ruby
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
 
Prog web 08-php-mvc
Prog web 08-php-mvcProg web 08-php-mvc
Prog web 08-php-mvc
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
 

Ähnlich wie Prog web 03-php-sessoes-cookies_cabecalhos

Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhos
Regis Magalhães
 
Aula 11 - Controle de sessão em PHP - Programação Web
Aula 11  - Controle de sessão em PHP - Programação WebAula 11  - Controle de sessão em PHP - Programação Web
Aula 11 - Controle de sessão em PHP - Programação Web
Dalton Martins
 
Php 03 Sessoes Cookies Cabecalhos
Php 03 Sessoes Cookies CabecalhosPhp 03 Sessoes Cookies Cabecalhos
Php 03 Sessoes Cookies Cabecalhos
Regis Magalhães
 
Framework Codeigniter - Sessão
Framework Codeigniter - SessãoFramework Codeigniter - Sessão
Framework Codeigniter - Sessão
Multside Digital
 
Sessões (in portuguese)
Sessões (in portuguese)Sessões (in portuguese)
Sessões (in portuguese)
Bruno Pedro
 

Ähnlich wie Prog web 03-php-sessoes-cookies_cabecalhos (20)

Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhos
 
Aula 11 - Controle de sessão em PHP - Programação Web
Aula 11  - Controle de sessão em PHP - Programação WebAula 11  - Controle de sessão em PHP - Programação Web
Aula 11 - Controle de sessão em PHP - Programação Web
 
Php 03 Sessoes Cookies Cabecalhos
Php 03 Sessoes Cookies CabecalhosPhp 03 Sessoes Cookies Cabecalhos
Php 03 Sessoes Cookies Cabecalhos
 
PHP MySQL Aula 08
PHP MySQL Aula 08PHP MySQL Aula 08
PHP MySQL Aula 08
 
Aula 5 - Cookies e sessões em PHP
Aula 5 - Cookies e sessões em PHPAula 5 - Cookies e sessões em PHP
Aula 5 - Cookies e sessões em PHP
 
Aula 5 - Cookies e Sessões em PHP
Aula 5 - Cookies e Sessões em PHPAula 5 - Cookies e Sessões em PHP
Aula 5 - Cookies e Sessões em PHP
 
Programação web ii aulas 05 e 06
Programação web ii   aulas 05 e 06Programação web ii   aulas 05 e 06
Programação web ii aulas 05 e 06
 
Aula 5
Aula 5Aula 5
Aula 5
 
Programação Server Side I - Aula 2
Programação Server Side I - Aula 2Programação Server Side I - Aula 2
Programação Server Side I - Aula 2
 
Cookies
CookiesCookies
Cookies
 
Segurança & Ruby on Rails
Segurança & Ruby on RailsSegurança & Ruby on Rails
Segurança & Ruby on Rails
 
Framework Codeigniter - Sessão
Framework Codeigniter - SessãoFramework Codeigniter - Sessão
Framework Codeigniter - Sessão
 
Utilizando cache com WordPress: tenha o seu website decolando sem sair do lugar
Utilizando cache com WordPress: tenha o seu website decolando sem sair do lugarUtilizando cache com WordPress: tenha o seu website decolando sem sair do lugar
Utilizando cache com WordPress: tenha o seu website decolando sem sair do lugar
 
Escrevendo códigos php seguros
Escrevendo códigos php segurosEscrevendo códigos php seguros
Escrevendo códigos php seguros
 
Sessões (in portuguese)
Sessões (in portuguese)Sessões (in portuguese)
Sessões (in portuguese)
 
Palestra de segurança em PHP - Hacking
Palestra de segurança em PHP - HackingPalestra de segurança em PHP - Hacking
Palestra de segurança em PHP - Hacking
 
Programação Web com jQuery
Programação Web com jQueryProgramação Web com jQuery
Programação Web com jQuery
 
Sistema php
Sistema phpSistema php
Sistema php
 
Segurança em Aplicativos Web
Segurança em Aplicativos WebSegurança em Aplicativos Web
Segurança em Aplicativos Web
 
Sessao
SessaoSessao
Sessao
 

Mehr von Regis Magalhães (16)

High Dimensional Data
High Dimensional DataHigh Dimensional Data
High Dimensional Data
 
PHP 10 CodeIgniter
PHP 10 CodeIgniterPHP 10 CodeIgniter
PHP 10 CodeIgniter
 
Prog web 09-php-crud-mvc
Prog web 09-php-crud-mvcProg web 09-php-crud-mvc
Prog web 09-php-crud-mvc
 
Prog web 05-php-mysql
Prog web 05-php-mysqlProg web 05-php-mysql
Prog web 05-php-mysql
 
Prog web 04-php-gd
Prog web 04-php-gdProg web 04-php-gd
Prog web 04-php-gd
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_web
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducao
 
Java 01 Java Visao Geral Resumo
Java 01 Java Visao Geral ResumoJava 01 Java Visao Geral Resumo
Java 01 Java Visao Geral Resumo
 
Merci 10 Completo
Merci 10 CompletoMerci 10 Completo
Merci 10 Completo
 
php 01 introducao
php 01 introducaophp 01 introducao
php 01 introducao
 
java 00 Introducao
java 00 Introducaojava 00 Introducao
java 00 Introducao
 
POO Plano de Curso
POO Plano de CursoPOO Plano de Curso
POO Plano de Curso
 
Php 04 Mysql
Php 04 MysqlPhp 04 Mysql
Php 04 Mysql
 
Php 08 Oo
Php 08 OoPhp 08 Oo
Php 08 Oo
 

Prog web 03-php-sessoes-cookies_cabecalhos

  • 1. Programação para WEB •Regis Pires Magalhães •regispiresmag@gmail.com PHP: Sessões, Cookies, Cabeçalhos HTTP, Autenticação e Autorização
  • 2. Sessões  Permitem armazenar informações importantes do usuário do site e acessá-las em qualquer página por determinado período de tempo.  Servem para armazenamento de dados no servidor.  Pode ser importante armazenar as informações do usuário, como sua identificação de login, seu carrinho de compras, produtos visitados, etc.  Um arquivo no servidor é criado por padrão no diretório temporário, com o nome do arquivo iniciando por “sess_” e seguido do ID da sessão:  Arquivo: sess_4e2eca1a2b20237ce861d690c68294cf  Caminho: C:xampptmp  No Ubuntu: /var/lib/php5/
  • 3. ID de Sessão  Há 2 formas de passar o ID de sessão para o servidor:  Via Cookie (Recomendada)  Via parâmetro de URL (só em último caso – cookies desabilitados no navegador)  O ID de sessão é inserido diretamente na URL.
  • 4. ID de Sessão via Cookie  Ao fazer uso de sessão em PHP, um cookie chamado PHPSESSID (identificador de sessão do PHP) é automaticamente criado no navegador para identificar que sessão está sendo usada no servidor. Este cookie é automaticamente excluído quando o navegador for fechado.
  • 5. Iniciando uma Sessão  Para iniciar uma nova sessão ou para abrir uma sessão já iniciada, deve-se usar a função session_start().  session_start() OBRIGATORIAMENTE deve vir antes de qualquer saída HTML.
  • 6. Armazenando algo na Sessão  Opções:  Via variável $_SESSION  Via função session_register()
  • 7. Armazenando algo na Sessão <?php session_start(); $variavel_01 = "Programação"; $variavel_02 = "para WEB"; session_register('variavel_01'); $_SESSION['variavel_02'] = $variavel_02; ?> <html> <head> <title>CEFET-PI PHB</title> </head> <body> <p>Informações sobre a sessão:</p> <?php echo '<p>Session ID: '.session_id().'</p>'; print_r($_SESSION); ?> </p> </body> </html>
  • 8. Eliminando algo da Sessão  session_unregister()  Elimina uma determinada variável da sessão.  session_unset()  Elimina todas as variáveis da sessão.
  • 9. Tempo de vida da Sessão  session_cache_expire()  Retorna o tempo de expiração das sessões ou define novo tempo de expiração em minutos.  Para redefinir o tempo de expiração, deve ser executada antes de session_start().  Tempo padrão de duração da sessão: 180 minutos  Para alterar o tempo padrão, deve-se chamar session_cache_expire() a cada página que faça uso da sessão.
  • 10. Destruindo uma Sessão  A destruição da sessão é feita através da função session_destroy().  Antes de chamar a função session_destroy(), deve-se primeiro abrir a sessão com session_start().  Essa função é normalmente utilizada quando um usuário requisita sua saída da aplicação (logout).
  • 11. Cookie  É uma pequena quantidade de informação armazenada na máquina cliente que possibilita a identificação de informações dos usuários que acessam o servidor.  Pode estar na memória do navegador ou armazenada no disco.  Contém um par: chave, valor.  Usar com moderação.  O uso de cookies pode permitir que o usuário após ter se autenticado, desligue o computador, acesse o site um tempo depois e não precise se autenticar novamente. Ex: GMail, Hotmail, Yahoo, etc.  Para utilizar esse recurso, o usuário aceita a opção “salvar as minhas informações neste computador”.
  • 12. Informações contidas em um Cookie  Nome: PHPSESSID  Valor: 4e2eca1a2b20237ce861d690c68294cf  Servidor: localhost  Caminho: /  Enviar: em todos os tipos de conexão  Validade: até sair do Firefox
  • 13. Cookie  Os cookies são uma parte do cabeçalho HTTP, logo a função setcookie() precisa ser chamada antes que qualquer outro dado seja enviado ao navegador.  Qualquer cookie enviado para o cliente automaticamente será incluido no array $_COOKIE.  Para armazenar um array em cookies, acrescente [] ao nome do cookie.
  • 14. Adicionando Cookies <?php /* dura até o fechamento do browser */ setcookie('meu_cookie1', 'PHP'); /* dura 1 hora */ setcookie('meu_cookie2', 'WEB', time()+3600); /* dura 1 hora */ setcookie('meu_cookie3', 'NOW', time()+3600, '/regis/', ''); ?>
  • 15. Usando Cookies <?php echo 'meu_cookie1: '; echo $_COOKIE['meu_cookie1'].'<br/>'; echo 'meu_cookie2: '; echo $_COOKIE['meu_cookie2'].'<br/>'; echo 'meu_cookie3: '; echo $_COOKIE['meu_cookie3'].'<br/>'; print_r($_COOKIE); ?>
  • 16. Removendo Cookies <?php // configurar valor com string vazia setcookie ('meu_cookie1', ''); setcookie ('meu_cookie2', ''); // configurar a data de expiração para o passado setcookie ('meu_cookie3', '', time() - 3600); ?>
  • 17. Adicionando Array em Cookies <?php setcookie('pessoa[0]', 'Maria'); setcookie('pessoa[1]', 'João'); setcookie('pessoa[2]', 'José'); ?>
  • 19. Contador (Cookie) <?php setcookie('contador_cookie', $_COOKIE['contador_cookie'] + 1); ?> <html> <head> <title>Contador</title> </head> <body> <p>Contador Cookie: <?php echo $_COOKIE['contador_cookie'] ?></p> </body> </html>
  • 20. Inserindo itens em um array – usando Session <?php session_start(); if (strlen(trim($_POST['nome'])) > 0) { if (gettype($_SESSION['nomes']) == 'array') { array_push($_SESSION['nomes'], $_POST['nome']); } else { $_SESSION['nomes'] = array($_POST['nome']); } } ?> <html> <head><title>Array usando Session</title></head> <body> <form action="session_array.php" method="post"> <p>Nome: <input name="nome" type="text"/></p> <input type="submit" value="Inserir Nome"/> </form> <?php if (isset($_SESSION['nomes'])) { echo '<p>Nomes inseridos na sessão:</p>'; foreach ($_SESSION['nomes'] as $item) { echo $item.'<br/>'; } } ?> </body> </html>
  • 21. Inserindo itens em um array – usando Cookies <?php if (strlen(trim($_POST['nome'])) > 0) { $tamanho = count($_COOKIE['nomes']); setcookie("nomes[$tamanho]", $_POST['nome']); } ?> <html> <head><title>Array usando Cookies</title></head> <body> <form action="cookies_array.php" method="post"> <p>Nome: <input name="nome" type="text"/></p> <input type="submit" value="Inserir Nome"/> </form> <?php if (isset($_COOKIE['nomes'])) { echo '<p>Nomes inseridos no cookie:</p>'; foreach ($_COOKIE['nomes'] as $item) { echo $item.'<br/>'; } echo $_POST['nome'].'<br/>'; } ?> </body> </html>
  • 22. Cabeçalhos HTTP  Redirecionamento de página  A função exit interrompe a execução do script e pode mostrar uma mensagem. <?php header('Location: http://localhost/xampp'); exit; ?> <?php $servidor = 'http://' . $_SERVER['HTTP_HOST']; header('Location: ' . $servidor . '/xampp/'); exit; ?>
  • 23. Redirecionamento via HTML <html> <head> <meta http-equiv="refresh" content="0;url=http://localhost/xampp/" /> </head> <body> <p>Redirecionando...</p> </body> </html>
  • 24. Itens via Cookies - Exibição <!-- array_cookies.php --> <html> <head><title>Array usando Cookies</title></head> <body> <form action="array_cookies_processa.php" method="post"> <p>Nome: <input name="nome" type="text"/></p> <input type="submit" value="Inserir Nome"/> </form> <?php if (isset($_COOKIE['nomes'])) { echo '<p>Nomes inseridos no cookie:</p>'; $i = 1; foreach ($_COOKIE['nomes'] as $item) { echo "$i. $item <a href="array_cookies_processa.php? remover=$item"> Remover</a><br/>"; $i++; } } ?> </body> </html>
  • 25. Itens via Cookies - Processamento <!-- array_cookies_processa.php --> <?php if (isset($_GET[remover])) { $posicao = array_search($_GET[remover], $_COOKIE['nomes']); setcookie("nomes[$posicao]", ''); header('Location: array_cookies.php'); exit; } else if (strlen(trim($_POST['nome'])) > 0) { end($_COOKIE['nomes']); $pos_final = key($_COOKIE['nomes']) + 1; setcookie("nomes[$pos_final]", $_POST['nome']); header('Location: array_cookies.php'); exit; } ?>
  • 26. Autenticação e Autorização  Autenticação  É o processo de identificação dos usuários do aplicativo.  Normalmente essa identificação é determinada pelo par usuário e senha, mas também pode ser feita através de biometria, etc.  Autorização  Controla as permissões de acesso de usuários autenticados a recursos do sistema.  Determina se um usuário autenticado pode ou não acessar um determinado recurso.
  • 27. Autenticação HTTP  O protocolo HTTP permite o pedido de usuário e senha via janela pop-up.  Isso é feito através do cabeçalho WWW- Authenticate.  Após a autenticação, as seguintes variáveis são criadas:  $_SERVER['PHP_AUTH_USER'] – Usuário  $_SERVER['PHP_AUTH_PW'] – Senha  $_SERVER['PHP_AUTH_TYPE'] – Basic
  • 28. Autenticação HTTP <?php function authenticate() { header('WWW-Authenticate: Basic realm="Login"'); header('HTTP/1.0 401 Unauthorized'); echo 'Usuário ou senha invalido(s).'; exit; } if (!isset($_SERVER['PHP_AUTH_USER'])) { authenticate(); } if ($_SERVER['PHP_AUTH_USER'] != 'regis' || $_SERVER['PHP_AUTH_PW'] != '1234') { authenticate(); } ?> <html> <head><title>Página inicial</title></head> <body> <p>Bem-vindo ao nosso site!!!</p> </body> </html>
  • 29. Autenticação – index.php <?php session_start(); $usuario = $_SESSION[usuario]; ?> <html> <head> <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> <title>Página inicial</title> </head> <body> <h1>Nossa aplicação</h1> <?php if ($usuario) { ?> <p><?php echo $usuario; ?>, seja bem-vindo ao nosso site. Clique <a href="sair.php">aqui</a> para sair.</p> <?php } else { ?> <p>É necessário fazer <a href="login.php">Login </a> para acessar o sistema.</p> <?php } ?> </body> </html>
  • 30. Autenticação – login.php <?php session_start(); $usuario = $_POST[usuario]; $senha = $_POST[senha]; if ($usuario == 'regis' && $senha == '12345') { $_SESSION[usuario] = $usuario; header('Location: index.php'); exit; } else { if ($usuario && $senha) $mensagem = 'Usuário e/ou senha inválido(s). Tente novamente...'; } ?> <html> <head> <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> <title>Página de Login</title> </head> <body> <h1>Login</h1> <?php if ($mensagem) { echo "<p>$mensagem</p>"; } ?> <form action="login.php" method="POST"> <p>Usuário: <input type="text" name="usuario" /></p> <p>Senha: <input type="password" name="senha" /></p> <p><input type="submit" /> </form> </body> </html>