segunda-feira, 2 de abril de 2007

Criar e gerir sessões no php

Uma das necessidades primordiais à criação de sites dinâmicos passa pela getão e controlo de acesso ao site. Este controlo passa muita vezes por autentificação quer por HTTP ou pela requisição de dados para validação posterior.









A gestão de sessões deve ser previamente estruturada de forma a garantir segurança da aplicação.
Na figura abaixo está representado um fluxograma correspondente à gestão de sessões para uma aplicação comum escrita em php.


[clique sob a imagem para aumentar]


















O protocolo HTTP permite establecer a comunicação cliente/servidor,contudo uma das limitações (ou não), é que este protocolo não permite transmissão da informação relativa ao estado.Isto quer dizer que se quisermos verificar se um utilizador fez uma requisição, este protocolo não o permite, pois este protocolo o utilizador "é sempre o mesmo",(indeferente) baseado no critério de privacidade.
As linguagens dinâmicas (PHP,ASP,JSP...) permitem no entanto,ultrapassar este dilema, recorrendo ao uso de sessões.Ao declararmos o inicio de uma sessão,bem como as suas variáveis,o PHP armazena num ficheiro geral os dados correspondentes, no servidor.

Nesse ficheiro encontra-se uma ID de sessão única, que é gerada pelo HTTP e uma outra ID que é armazenada no lado de cliente de duas formas.Uma pelo uso de cookies e a outra mediante o envio através da URL.O uso de sessões guarda a ID de sessão no lado do cliente, mas no caso das variáveis passadas por URL ou através de cookies, poder-se-ão encontrar informações anteriores relativas a um determinado utilizador.Ao manter-se o ID de sessão na URL, garante-se com maior eficácia o número de utilizadores a acessar a páginas controladas por sessões.O uso de cookies comporta no entanto algumas precausões, pois o utilizador poderá ter os cookies desabilitados (o PHP + Javascript permite saber isso). Se a manipulação de sessões utilizar está técnica peça gentilmente ao utilizador que os active no browser dele.

Sem comentários: