Programação web Prof. Wladimir Linguagem PHP Cookie e Sessão @wre2008 1
Sumário Header; Cookie; Sessão; Exemplos. @wre2008 2
Header Esta função permite que um script php redirecione para outra página. A sintaxe é: header("location: endereço"); Obs: Não deve ser utilizado em conjunto com um comando de imprimir na tela. Ex: echo. @wre2008 3
<html> <head> <title>header</title> </head> <body> <form action="#" method="get"> <table border=0> <tr> <td>* Usuário: </td> <td><input type= text name= usuario value= <?php echo $user;?> > </td> </tr> <tr> <td colspan="2"><center><input type="submit" name="enviar" value="redirecionar"></center></td> </tr> </table> </form> </body> @wre2008 4 </html>
<?php $botao = $_GET["enviar"]; if ($botao!= "") { $usuario = $_GET["usuario"]; header("location: header2.php?usuario=$usuario"); } else{ echo "clique no botão para ser direcionado!!"; }?> @wre2008 5
<?php $usuario = $_GET["usuario"];?> <html> <head> <title>header 2</title> </head> <body> Você foi redirecionado <?php echo $usuario;?>!! <br> Clique em <a href="javascript:history.go(-1)"> voltar </a> </body> </html> @wre2008 6
Cookie O que são cookies? São variáveis gravadas pelo browser do usuário. Em que os cookies são úteis? Quando se quer armazenar informações que serão utilizadas nas outras páginas do site. Quando se quer mostrar áreas restritas do site para determinados usuários. Como funciona? É possível gravar o login e senha de um usuário e recuperar de acordo com um tempo especificado. Obs caso o tempo não seja especificado o cookie irá durar até o fim da aplicação. @wre2008 7
Cookie A função para gravar cookies é a setcookie(), cuja sintaxe é a seguinte: setcookie(string_nome,string_valor,tempo); Exemplo: setcookie("senha",$senha); // este cookie expira no momento do fechamento do browser. setcookie("usuario",$senha,time()+3600); // Este cookie expira em 1 hora @wre2008 8
Cookie Recuperando Cookies: Os cookies gravados pelo script PHP ficam armazenados no array $HTTP_COOKIE_VARS[], cujo índice é a string nome especificada na função setcookie. Para recuperar um cookie proceda da seguinte maneira: echo $HTTP_COOKIE_VARS["usuario"]; @wre2008 9
<html> <head> <title>cookie funcionando</title> </head> <body> <?php if ($_COOKIE ["usuario"]!= "") { echo "Usuario ".$_COOKIE["usuario"]." logado!!"; } else { echo "Usuario não logado."; }?> </body> </html> @wre2008 10
<html><head><title>cookie</title></head> <body> <form action="#" method="get"> <table border=0> <tr> <td>* Usuário: </td> <td><input type="text" name="usr_usr" value="<?php echo $user;?>"></td> </tr> <tr> <td>* Senha:</td> <td> <input type="password" name="senha_usr"></td> </tr> <tr> <td colspan="2"><center><input type="submit" name="enviar" value="enviar"></center></td> </tr> </table> </form> </body> @wre2008 11 </html>
<?php $user = $_GET["usr_usr"]; $senha = $_GET["senha_usr"]; $botao = $_GET["enviar"]; setcookie("usuario",$user,time()+3600); setcookie("senha_usuario",$senha,time()+3600); if ($botao!= "") { if (($user!= "") && ($senha!= "")) { header("location: cookie2.php"); } else{ echo "Usuário e senha não podem estar em branco!"; } }?> @wre2008 12
Cookie Os cookies não são aceitos pela totalidade de usuários e nem por todos navegadores. Em alguma aplicações é necessário a reutilização de certas variáveis em uma mesma sessão. @wre2008 13
Sessão As vaiáveis de sessão se diferenciam das variáveis clássicas em que estas residem no servidor, são específicas de um só usuário definido por um identificador e que podem ser utilizadas na globalidade das páginas do site. @wre2008 14
Sessão Para iniciar uma sessão podemos fazê-lo de duas maneira diferentes: Declaramos a abertura da sessão através da função session_start(). Declaramos uma variável de sessão por meio da função session_register('variavel'). As sessões devem ser iniciadas no início do nosso script. Antes de abrir qualquer etiqueta ou de imprimir seja o que for. Em caso contrário obteremos um erro. @wre2008 15
Sessão Uma vez criada, a sessão pode registrar variáveis que ficarão disponíveis no array $_SESSION. @wre2008 16
Sessão session_start() cria uma sessão (ou resume a sessão atual baseada numa id de sessão sendo passada via uma variável GET ou um cookie). session_destroy() destrói todos os dados associados com a sessão atual. session_id() é usado para obter ou definir o id de sessão para a sessão atual. @wre2008 17
Sessão session_register() registra a variável global com o nome na sessão atual. session_is_registered(string $nome) retorna TRUE se há uma variável global com o nome nome registrada na sessão atual. Os comandos acima estão ultrapassados! $_SESSION[ nome'] = valor'; $_SESSION[ nome2'] = valor2'; @wre2008 18
Sessão Exemplo: Criar um sistema de login e senha. @wre2008 19
<html> <head><title>formulario</title></head> login.php <body> <form action= valida.php" method="get"> <table border=0> <tr> <td>* Usuário: </td> <td><input type="text" name="usr_usr" value="<?php echo $user;?>"></td> </tr> <tr> <td>* Senha:</td> <td> <input type="password"name="senha_usr"></td> </tr> <tr> <td colspan="2"><center><input type="submit" name="enviar" value="enviar"></center></td> </tr></table></form> </body> </html> @wre2008 20
<?php $user = $_GET["usr_usr"]; $senha = $_GET["senha_usr"]; $botao = $_GET["enviar"]; valida.php if ($botao!= "") { if (($user!= "") && ($senha!= "")) { session_start(); $_SESSION["user"] = $user; $_SESSION["senha"] = $senha; session_name("usuario"); header("location:logado.php"); } }?> @wre2008 21
<?php logado.php session_start(); if (($_SESSION["user"]!= "") && ($_SESSION["senha"]!= "")) {?> <html> <head><title>formulario</title></head> <body> Bem vindo ao site Sr. <?php echo $_SESSION["user"];?> <br> Clique <a href="logout.php">aqui</a> para fazer logout. </body> </html> <?php } else { header("location:login.php"); }?> @wre2008 22
<?php session_start(); logout.php echo "Clique <a href=login.php>aqui</a> para voltar"; session_destroy();?> @wre2008 23
Trabalho da semana Criar um site que apresente 3 páginas, sendo duas páginas internas e uma index. As páginas internas o usuário só poderá acessar se estiver logado no site principal com o login igual a aluno e senha igual a redes. Obs- O usuário poderá fazer o logout em qualquer uma das duas páginas internas. Caso o usuário tentar acessar as páginas internas o sistema deve redirecionar para a página principal. @wre2008 24