Вы находитесь на странице: 1из 13

As Sesses no PHP

16 As Sesses no PHP

O protocolo http, como protocolo stateless, no suporta sesses. Para contornar esta limitao do protocolo, o PHP tem funcionalidades especficas que tornam fcil a implementao das sesses. Quando uma sesso criada, o PHP gera automticamente uma ID de sesso, que a identifica, num ficheiro ou numa base de dados. Aps a criao da sesso, possvel com o PHP guardar informao na mesma e recuper-la.

As Sesses no PHP
16.1 As Sesses no PHP (cont)

A nica informao que passa entre o web-server e o browser cliente o ID da sesso, ficando toda a informao relevante guardada do lado do servidor. O PHP guarda as configuraes do modo de gesto das sesses na directiva [session] do ficheiro de configurao php.ini. Normalmente as sesses so guardadas num ficheiro, cujo local definido no php.ini.

As Sesses no PHP
16.2 As Sesses no PHP (cont)

Como j referido, o ID da sesso tem de ser transferido automticamente entre o browser e o web-server, e a forma mais fcil de executar esta transferncia usando cookies. Usando este mtodo, o PHP envia uma cookie chamada PHPSESSID (por defeito o nome pode ser mudado na directiva session.name). Para que o uso das cookies seja possvel, necessrio que a directiva abaixo esteja no ficheiro de configurao config.ini:
session.use_cookies = 1

As Sesses no PHP
16.3 As Sesses no PHP (cont)

No caso do cliente no suportar cookies, existe um mecanismo fallback (session.use_trans_sid=0), em que as sesses so adicionadas automticamente no fim de cada URL. O caso do cliente no aceitar cookies no frequente, e o uso deste mecanismo deve ser evitado por questes de segurana e por no serem amigveis dos motores de busca.

As Sesses no PHP
16.4 As Sesses no PHP (cont) Activar as Sesses Para activar o uso de sesses num script, podemos faz-lo globalmente com o uso da directiva session.autostart = 1 ou activar em cada script que desejamos com a instruco com a funo session_start().

As Sesses no PHP
16.5 As Sesses no PHP (cont) Exemplo iniciarsessao.php: <?php session_start();

if(isset($_COOKIE["PHPSESSID"])) { echo Sesso activada; } ?>

As Sesses no PHP
16.6 As Sesses no PHP (cont) Gravar e ler dados nas sesses O PHP torna extremamente fcil gravar e recuperar informao das sesses. Todos os dados gravados na sesso so expostos atravs do array $_SESSION.

As Sesses no PHP
16.7 As Sesses no PHP (cont) Exemplo lerescreversessao.php <?php session_start(); echo 'Sesso Iniciada.<br />'; $_SESSION['data'] = date("Y-m-d"); ; echo 'Sesso gravada.<br />'; echo "Sesso recuperada: " . $_SESSION['data']; ?>

As Sesses no PHP
16.8 As Sesses no PHP (cont) Destruir as sesses O PHP tambm tem um mtodo de destruir sesses. Podemos utilizar este mtodo quando, por exemplo, o utilizador executa logout do nosso site e necessitamos de eliminar todos os dados guardados na sua sesso. A funo que devemos utilizar para destruir sesses, chama-se session_destroy().

As Sesses no PHP
16.9 As Sesses no PHP (cont) Exemplo sessiondestroy.php <?php session_start(); echo 'Antes: <pre>'; print_r($_SESSION); echo '</pre>Depois: <pre> '; session_destroy(); print_r($_SESSION); echo '</pre>'; ?>

As Sesses no PHP
16.10 As Sesses no PHP (cont) Exerccio Com os conhecimentos j adquiridos, deve criar uma pgina web como no exemplo seguinte. Deve criar 3 ficheiros:

exerciciosessao.html ficheiro html que contm o form. sessao.php ficheiro php que l os valores submetidos e os grava numa sesso. mostrarvalores.php ficheiro php que mostra os valores numa nova pgina

As Sesses no PHP
16.11 As Sesses no PHP (cont)

As Sesses no PHP
16.12 Exerccio:

Utilizando os forms, crie um login, com uma simples autenticao no cdigo, e com a gravao na sesso do resultado da autenticao. S deve poder aceder a um script chamado publicar, se a autenticao for positiva.