SlideShare uma empresa Scribd logo
1 de 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');
?>

Mais conteúdo relacionado

Mais procurados

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
 
Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기경원 이
 
Introduction to SQLAlchemy ORM
Introduction to SQLAlchemy ORMIntroduction to SQLAlchemy ORM
Introduction to SQLAlchemy ORMJason Myers
 
Understanding JWT Exploitation
Understanding JWT ExploitationUnderstanding JWT Exploitation
Understanding JWT ExploitationAkshaeyBhosale
 
Abusing Interrupts for Reliable Windows Kernel Exploitation (en)
Abusing Interrupts for Reliable Windows Kernel Exploitation (en)Abusing Interrupts for Reliable Windows Kernel Exploitation (en)
Abusing Interrupts for Reliable Windows Kernel Exploitation (en)inaz2
 
Implementation of k-means clustering algorithm in C
Implementation of k-means clustering algorithm in CImplementation of k-means clustering algorithm in C
Implementation of k-means clustering algorithm in CKasun Ranga Wijeweera
 
Hack & Fix, Hands on ColdFusion Security Training
Hack & Fix, Hands on ColdFusion Security TrainingHack & Fix, Hands on ColdFusion Security Training
Hack & Fix, Hands on ColdFusion Security TrainingColdFusionConference
 
Overview of JSON Object Signing and Encryption
Overview of JSON Object Signing and EncryptionOverview of JSON Object Signing and Encryption
Overview of JSON Object Signing and EncryptionMasaru Kurahayashi
 
Introduction to jQuery
Introduction to jQueryIntroduction to jQuery
Introduction to jQuerymanugoel2003
 
How to guarantee your change is integrated to Moodle core
How to guarantee your change is integrated to Moodle coreHow to guarantee your change is integrated to Moodle core
How to guarantee your change is integrated to Moodle coreDan Poltawski
 
PHPUnit 入門介紹
PHPUnit 入門介紹PHPUnit 入門介紹
PHPUnit 入門介紹Jace Ju
 
A python web service
A python web serviceA python web service
A python web serviceTemian Vlad
 
[若渴計畫] Challenges and Solutions of Window Remote Shellcode
[若渴計畫] Challenges and Solutions of Window Remote Shellcode[若渴計畫] Challenges and Solutions of Window Remote Shellcode
[若渴計畫] Challenges and Solutions of Window Remote ShellcodeAj MaChInE
 
PHP unserialization vulnerabilities: What are we missing?
PHP unserialization vulnerabilities: What are we missing?PHP unserialization vulnerabilities: What are we missing?
PHP unserialization vulnerabilities: What are we missing?Sam Thomas
 
Advanced PHPUnit Testing
Advanced PHPUnit TestingAdvanced PHPUnit Testing
Advanced PHPUnit TestingMike Lively
 
WCF for Dummies (Parte II)
WCF for Dummies (Parte II)WCF for Dummies (Parte II)
WCF for Dummies (Parte II)Will.i.am
 

Mais procurados (20)

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.
 
Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기
 
Introduction to SQLAlchemy ORM
Introduction to SQLAlchemy ORMIntroduction to SQLAlchemy ORM
Introduction to SQLAlchemy ORM
 
Php sessions & cookies
Php sessions & cookiesPhp sessions & cookies
Php sessions & cookies
 
Understanding JWT Exploitation
Understanding JWT ExploitationUnderstanding JWT Exploitation
Understanding JWT Exploitation
 
Abusing Interrupts for Reliable Windows Kernel Exploitation (en)
Abusing Interrupts for Reliable Windows Kernel Exploitation (en)Abusing Interrupts for Reliable Windows Kernel Exploitation (en)
Abusing Interrupts for Reliable Windows Kernel Exploitation (en)
 
SCHEDULING ALGORITHMS
SCHEDULING ALGORITHMSSCHEDULING ALGORITHMS
SCHEDULING ALGORITHMS
 
Implementation of k-means clustering algorithm in C
Implementation of k-means clustering algorithm in CImplementation of k-means clustering algorithm in C
Implementation of k-means clustering algorithm in C
 
Hack & Fix, Hands on ColdFusion Security Training
Hack & Fix, Hands on ColdFusion Security TrainingHack & Fix, Hands on ColdFusion Security Training
Hack & Fix, Hands on ColdFusion Security Training
 
Overview of JSON Object Signing and Encryption
Overview of JSON Object Signing and EncryptionOverview of JSON Object Signing and Encryption
Overview of JSON Object Signing and Encryption
 
Introduction to jQuery
Introduction to jQueryIntroduction to jQuery
Introduction to jQuery
 
How to guarantee your change is integrated to Moodle core
How to guarantee your change is integrated to Moodle coreHow to guarantee your change is integrated to Moodle core
How to guarantee your change is integrated to Moodle core
 
PHPUnit 入門介紹
PHPUnit 入門介紹PHPUnit 入門介紹
PHPUnit 入門介紹
 
Introduction to Rust
Introduction to RustIntroduction to Rust
Introduction to Rust
 
A python web service
A python web serviceA python web service
A python web service
 
Php gd library
Php gd libraryPhp gd library
Php gd library
 
[若渴計畫] Challenges and Solutions of Window Remote Shellcode
[若渴計畫] Challenges and Solutions of Window Remote Shellcode[若渴計畫] Challenges and Solutions of Window Remote Shellcode
[若渴計畫] Challenges and Solutions of Window Remote Shellcode
 
PHP unserialization vulnerabilities: What are we missing?
PHP unserialization vulnerabilities: What are we missing?PHP unserialization vulnerabilities: What are we missing?
PHP unserialization vulnerabilities: What are we missing?
 
Advanced PHPUnit Testing
Advanced PHPUnit TestingAdvanced PHPUnit Testing
Advanced PHPUnit Testing
 
WCF for Dummies (Parte II)
WCF for Dummies (Parte II)WCF for Dummies (Parte II)
WCF for Dummies (Parte II)
 

Destaque

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_webRegis Magalhães
 
Java 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral DetalhadoJava 01 Java Visao Geral Detalhado
Java 01 Java Visao Geral DetalhadoRegis Magalhães
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducaoRegis Magalhães
 
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 2011Regis Magalhães
 
Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Regis 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 JavaAdriano 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
 

Destaque (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
 

Semelhante a 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_cabecalhosRegis 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 WebDalton Martins
 
Php 03 Sessoes Cookies Cabecalhos
Php 03 Sessoes Cookies CabecalhosPhp 03 Sessoes Cookies Cabecalhos
Php 03 Sessoes Cookies CabecalhosRegis Magalhães
 
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 06Yuri Bispo
 
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 2Antonio Passos
 
Segurança & Ruby on Rails
Segurança & Ruby on RailsSegurança & Ruby on Rails
Segurança & Ruby on RailsJulio Monteiro
 
Framework Codeigniter - Sessão
Framework Codeigniter - SessãoFramework Codeigniter - Sessão
Framework Codeigniter - SessãoMultside Digital
 
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 lugarmeetupwordpressfln
 
Escrevendo códigos php seguros
Escrevendo códigos php segurosEscrevendo códigos php seguros
Escrevendo códigos php segurosDouglas V. Pasqua
 
Sessões (in portuguese)
Sessões (in portuguese)Sessões (in portuguese)
Sessões (in portuguese)Bruno Pedro
 
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 - HackingLuis Gustavo Almeida
 
Segurança em Aplicativos Web
Segurança em Aplicativos WebSegurança em Aplicativos Web
Segurança em Aplicativos WebSergio Henrique
 

Semelhante a 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
 
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
 

Mais de Regis Magalhães

Mais de 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>