Sessões e Autenticação *** Sessão, o conceito: As sessões são algo bastente uteis num website, pois permitem criar uma area reservada (sessão) para cada utilizador, que está disponível em todo o website. O conceito é muito simples: ao se iniciar uma sessão, é enviado para o utilizador um identificador unico de sessão (SID - Session ID), para que a sessão possa ser mantida em todo o site. Este SID é enviado para o utilizador primeiramente sob a forma de um cookie com o ID da sessão, mas caso o utilizador esteja, por algum motivo, a rejeitar a recepção de cookies, o SID é enviado como parametro GET de todos os links () que aparecem nas páginas (isto se o servidor estiver configurado correctamente, com a opcção "--enable-trans-sid"). *** Como utilizar sessoes? Usar as sessões não tem nada que saber. A lógica é muito simples: cria-se uma sessão; é enviado o SID para o utilizador; Esse SID é posteriormente utilizador para manter a sessão aberta em todas as páginas, até ao utilizador efectuar um "logout" (saida) da sessão, onde esta é destruida. Esquema: 1ª pagina: Inicio de Sessão, envio de SID para o utilizador; Resto do Site: Envio do SID para o servidor, para retomar a sessão aberta; Logout: É efectuada a destruição da sessão, e toda a sua informação é apagada. *** A programação! Para iniciar a sessão, utiliza-se o "session_start()". Esta função cria o SID, se este não existir, e envia-o para o utilizador. O "session_start()" permite também retomar uma sessão aberta, bastanto para tal a função ter acesso ao SID da sessão que se quer retormar. Logo, se o "session_start()" cria e mantem a sessão aberta, temos do utilizar em todos os scripts, para manter a sessão em todo o site. A forma mais simples de efectuar esta operação é simples! Normalmente existe um ficheiro de configuração, onde são declaradas todas as variáveis globais (user/password/servidor de mysql) que são iguais para todo o site, e este ficheiro é chamado em todos os scripts pois esta informação deve estar disponível nestes mesmos scripts. Assim, aproveitando este ficheiro de configuração que é utilizado em todo o site, executamos a nossa instrução de abertura e manutenção de sessão. Logo teriamos: ficheiro de configurações do site: * /config.inc.php * Para que este ficheiro seja executado em todo o site utilizamos o seguinte codigo: Agora, aproveitando o ficheiro de configuração, a nossa sessão é criada/mantida em todos os scripts do site. *** Armazenar informação na sessão: Para armazenarmos informação numa sessão, basta criar-mos uma variável de sessão, e dar-lhe um valor. Isto faz-se utilizando a função "session_register()". Vamos por exemplo, guardar uma variável com o nosso nome, para ficar disponivel em todo o site: ----------------------------------------------------------------------------------------------------------- Nota: deve-se utilizar um nome proprio para variaveis de sessão. Neste caso o prefixo das variáveis de sessão é "sessao_" para que se possa distingir bem entre variaveis de sessão e variaveis normais do script. ----------------------------------------------------------------------------------------------------------- Assim, na proxima página que for aberta, e efectue a devida chamada ao "config.inc.php", podemos chamar a variável de sessao "sessao_nome": Pode armazenar numa sessão qualquer tipo de variáveis, inclusivé arrays. *** Sessões e autenticação Como já poderam ver, é muito fácil utilizar sessões, e variaveis de sessão. E visto que as variáveis de sessão estão disponiveis em qualquer script do nosso site, é bastante simples fazerum sistema de autenticação utilizando sessões. O conceito para autenticar um utilizador num site, é bastante simples e pode ser simplificado do seguinte modo: -Cria-se uma sessão quando o utilizador entra no site; -O utilizador autentica-se com o seu login e password. Esta informação é verificada, e se for um login correcto, regista-se uma variavel de sessão com o ID do utilizador autenticado. -Os scripts que necessitam que o utilizador esteja autenticado, apenas tem de verificar se existe um ID de utilizador na variável de sessão. Se sim, o utilizador está autenticado; senão ainda não está autenticado. -Para efectuar o logout da autenticação, utiliza-se simplesmente uma chamada ao "session_destroy", que destroi a sessão, e toda a informação nela contida (logo deixa de haver o ID de utilizador na sessão). -Da próxima vez que o utilizador carregue uma nova página do site, é atribuido uma nova sessão, e caso necessite, o utilizador pode voltar a autenticar-se normalmente. *** Referenência a funcções das sessões: http://www.cidadela.org/papiros/php/ref.session.html ########################################################################## # Autor: [Dragon] # # Email: dragon@cidadela.org # # URL: http://www.cidadela.org/ # # # # Última revisão: 2001/09/21 # ##########################################################################