SlideShare uma empresa Scribd logo
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

PHP Form Validation Technique
PHP Form Validation TechniquePHP Form Validation Technique
PHP Form Validation Technique
Morshedul Arefin
 
4.3 MySQL + PHP
4.3 MySQL + PHP4.3 MySQL + PHP
4.3 MySQL + PHP
Jalpesh Vasa
 
Pwning the Enterprise With PowerShell
Pwning the Enterprise With PowerShellPwning the Enterprise With PowerShell
Pwning the Enterprise With PowerShell
Beau Bullock
 
My Sql Work Bench
My Sql Work BenchMy Sql Work Bench
My Sql Work Bench
Lahiru Danushka
 
New methods for exploiting ORM injections in Java applications
New methods for exploiting ORM injections in Java applicationsNew methods for exploiting ORM injections in Java applications
New methods for exploiting ORM injections in Java applications
Mikhail Egorov
 
ADO.NET Entity Framework
ADO.NET Entity FrameworkADO.NET Entity Framework
ADO.NET Entity Framework
Doncho Minkov
 
Apache Unomi In Depth - ApacheCon EU 2015 Session
Apache Unomi In Depth - ApacheCon EU 2015 SessionApache Unomi In Depth - ApacheCon EU 2015 Session
Apache Unomi In Depth - ApacheCon EU 2015 Session
Serge Huber
 
Sessions and cookies
Sessions and cookiesSessions and cookies
Sessions and cookies
www.netgains.org
 
Http methods
Http methodsHttp methods
Http methods
maamir farooq
 
PHP - Introduction to PHP Cookies and Sessions
PHP - Introduction to PHP Cookies and SessionsPHP - Introduction to PHP Cookies and Sessions
PHP - Introduction to PHP Cookies and Sessions
Vibrant Technologies & Computers
 
Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018
André Luiz Forchesatto
 
Php database connectivity
Php database connectivityPhp database connectivity
Spring Framework - Spring Security
Spring Framework - Spring SecuritySpring Framework - Spring Security
Spring Framework - Spring Security
Dzmitry Naskou
 
Data Types In PHP
Data Types In PHPData Types In PHP
Data Types In PHP
Mark Niebergall
 
Using Java to implement SOAP Web Services: JAX-WS
Using Java to implement SOAP Web Services: JAX-WS�Using Java to implement SOAP Web Services: JAX-WS�
Using Java to implement SOAP Web Services: JAX-WS
Katrien Verbert
 
Cookie & Session In ASP.NET
Cookie & Session In ASP.NETCookie & Session In ASP.NET
Cookie & Session In ASP.NET
ShingalaKrupa
 
Chapter03 Creating And Managing User Accounts
Chapter03      Creating And  Managing  User  AccountsChapter03      Creating And  Managing  User  Accounts
Chapter03 Creating And Managing User Accounts
Raja Waseem Akhtar
 
Proxy server
Proxy serverProxy server
Proxy server
Proxies Rent
 
Socket programming in Java (PPTX)
Socket programming in Java (PPTX)Socket programming in Java (PPTX)
Socket programming in Java (PPTX)
UC San Diego
 
Php array
Php arrayPhp array
Php array
Nikul Shah
 

Mais procurados (20)

PHP Form Validation Technique
PHP Form Validation TechniquePHP Form Validation Technique
PHP Form Validation Technique
 
4.3 MySQL + PHP
4.3 MySQL + PHP4.3 MySQL + PHP
4.3 MySQL + PHP
 
Pwning the Enterprise With PowerShell
Pwning the Enterprise With PowerShellPwning the Enterprise With PowerShell
Pwning the Enterprise With PowerShell
 
My Sql Work Bench
My Sql Work BenchMy Sql Work Bench
My Sql Work Bench
 
New methods for exploiting ORM injections in Java applications
New methods for exploiting ORM injections in Java applicationsNew methods for exploiting ORM injections in Java applications
New methods for exploiting ORM injections in Java applications
 
ADO.NET Entity Framework
ADO.NET Entity FrameworkADO.NET Entity Framework
ADO.NET Entity Framework
 
Apache Unomi In Depth - ApacheCon EU 2015 Session
Apache Unomi In Depth - ApacheCon EU 2015 SessionApache Unomi In Depth - ApacheCon EU 2015 Session
Apache Unomi In Depth - ApacheCon EU 2015 Session
 
Sessions and cookies
Sessions and cookiesSessions and cookies
Sessions and cookies
 
Http methods
Http methodsHttp methods
Http methods
 
PHP - Introduction to PHP Cookies and Sessions
PHP - Introduction to PHP Cookies and SessionsPHP - Introduction to PHP Cookies and Sessions
PHP - Introduction to PHP Cookies and Sessions
 
Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018
 
Php database connectivity
Php database connectivityPhp database connectivity
Php database connectivity
 
Spring Framework - Spring Security
Spring Framework - Spring SecuritySpring Framework - Spring Security
Spring Framework - Spring Security
 
Data Types In PHP
Data Types In PHPData Types In PHP
Data Types In PHP
 
Using Java to implement SOAP Web Services: JAX-WS
Using Java to implement SOAP Web Services: JAX-WS�Using Java to implement SOAP Web Services: JAX-WS�
Using Java to implement SOAP Web Services: JAX-WS
 
Cookie & Session In ASP.NET
Cookie & Session In ASP.NETCookie & Session In ASP.NET
Cookie & Session In ASP.NET
 
Chapter03 Creating And Managing User Accounts
Chapter03      Creating And  Managing  User  AccountsChapter03      Creating And  Managing  User  Accounts
Chapter03 Creating And Managing User Accounts
 
Proxy server
Proxy serverProxy server
Proxy server
 
Socket programming in Java (PPTX)
Socket programming in Java (PPTX)Socket programming in Java (PPTX)
Socket programming in Java (PPTX)
 
Php array
Php arrayPhp array
Php array
 

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_web
Regis Magalhães
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
Regis Magalhães
 
Java 15 Jar
Java 15 JarJava 15 Jar
Java 15 Jar
Regis Magalhães
 
Prog web 07-pdo
Prog web 07-pdoProg web 07-pdo
Prog web 07-pdo
Regis Magalhães
 
Pascal Tipos
Pascal TiposPascal Tipos
Pascal Tipos
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 06-php-oo
Prog web 06-php-ooProg web 06-php-oo
Prog web 06-php-oo
Regis Magalhães
 
Java 14 Javadoc
Java 14 JavadocJava 14 Javadoc
Java 14 Javadoc
Regis Magalhães
 
Easy Rails
Easy RailsEasy Rails
Easy Rails
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
 
Coding Dojo
Coding DojoCoding Dojo
Coding Dojo
Regis 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 2011
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
 
Curso Ruby
Curso RubyCurso Ruby
Curso Ruby
Regis Magalhães
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
Adriano Teixeira de Souza
 
Prog web 08-php-mvc
Prog web 08-php-mvcProg web 08-php-mvc
Prog web 08-php-mvc
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
 

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_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
 
PHP MySQL Aula 08
PHP MySQL Aula 08PHP MySQL Aula 08
PHP MySQL Aula 08
Carlos Santos
 
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
Lucas Augusto Fagundes
 
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
Lucas Augusto Fagundes
 
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
Lucas Augusto Fagundes
 
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
Yuri Bispo
 
Aula 5
Aula 5Aula 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
Antonio Passos
 
Cookies
CookiesCookies
Cookies
Denis Katko
 
Segurança & Ruby on Rails
Segurança & Ruby on RailsSegurança & Ruby on Rails
Segurança & Ruby on Rails
Julio Monteiro
 
Framework Codeigniter - Sessão
Framework Codeigniter - SessãoFramework Codeigniter - Sessão
Framework Codeigniter - Sessão
Multside 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 lugar
meetupwordpressfln
 
Escrevendo códigos php seguros
Escrevendo códigos php segurosEscrevendo códigos php seguros
Escrevendo códigos php seguros
Douglas 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 - Hacking
Luis Gustavo Almeida
 
Programação Web com jQuery
Programação Web com jQueryProgramação Web com jQuery
Programação Web com jQuery
Victor Adriel Oliveira
 
Sistema php
Sistema phpSistema php
Sistema php
Nuno Bastos
 
Segurança em Aplicativos Web
Segurança em Aplicativos WebSegurança em Aplicativos Web
Segurança em Aplicativos Web
Sergio 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

High Dimensional Data
High Dimensional DataHigh Dimensional Data
High Dimensional Data
Regis Magalhães
 
PHP 10 CodeIgniter
PHP 10 CodeIgniterPHP 10 CodeIgniter
PHP 10 CodeIgniter
Regis Magalhães
 
Prog web 09-php-crud-mvc
Prog web 09-php-crud-mvcProg web 09-php-crud-mvc
Prog web 09-php-crud-mvc
Regis Magalhães
 
Prog web 05-php-mysql
Prog web 05-php-mysqlProg web 05-php-mysql
Prog web 05-php-mysql
Regis Magalhães
 
Prog web 04-php-gd
Prog web 04-php-gdProg web 04-php-gd
Prog web 04-php-gd
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-passosRegis 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 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
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducao
Regis Magalhães
 
Java 01 Java Visao Geral Resumo
Java 01 Java Visao Geral ResumoJava 01 Java Visao Geral Resumo
Java 01 Java Visao Geral Resumo
Regis Magalhães
 
php 01 introducao
php 01 introducaophp 01 introducao
php 01 introducao
Regis Magalhães
 
java 00 Introducao
java 00 Introducaojava 00 Introducao
java 00 Introducao
Regis Magalhães
 
POO Plano de Curso
POO Plano de CursoPOO Plano de Curso
POO Plano de Curso
Regis Magalhães
 
Php 04 Mysql
Php 04 MysqlPhp 04 Mysql
Php 04 Mysql
Regis Magalhães
 
Php 08 Oo
Php 08 OoPhp 08 Oo
Php 08 Oo
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>