segunda-feira, 28 de novembro de 2011

Sessões PHP


$ _SESSION é uma matriz especial usado para armazenar informações em toda a solicitações de páginas que um usuário faz durante a sua visita ao seu site ou aplicação web. A maneira mais fundamental para explicar o que é uma sessões é como é imaginar o seguinte cenário:
Você está trabalhando com um aplicativo. Você abri-lo, fazer algumas alterações, e depois fechá-lo.
Que é uma sessão em sua forma mais simples.

O cenário de exemplo é uma reminiscência do processo que acontece quando se utiliza um sistema de login. O processo pode ser extremamente complicado ou incrivelmente simples, desde que há um valor que persiste entre os pedidos. Informações armazenadas na sessão pode ser convocado a qualquer momento durante a sessão aberta.


Embora possa haver muitos usuários acessando o site ao mesmo tempo, cada um com sua própria sessão, é graças a IDs exclusivos atribuídos e geridos por PHP para cada sessão que permite que cada sessão de usuário a ser disponível apenas para si mesmo. Informações da sessão são armazenados no servidor ao invés de computador do usuário (como dados de cookie é armazenado), o que torna as sessões mais seguro do que os cookies tradicionais para transmitir informações entre solicitações de página.
Neste artigo vou dar-lhe a lá em baixo, sobre o uso de sessões em PHP - como criá-los, como destruí-los, e como se certificar de que eles permaneçam seguros.


Usando Sessions
Antes que você possa armazenar a informação em uma sessão, você tem que começar manipulação de sessão no PHP. Isto é feito no início do seu código PHP, e deve ser feito antes de qualquer texto, HTML, JavaScript ou é enviado para o navegador. Para iniciar a sessão, você chamar o session_start () função no seu primeiro arquivo:


<? Php
/ / Start-los motores!
session_start ();
/ / Armazenar dados de sessão
$ _SESSION [ "username" ] = "Callum" ;


session_start () inicia a sessão entre o usuário eo servidor, e permite que os valores armazenados em $ _SESSION para ser acessível em outros scripts mais tarde.
Em seu segundo arquivo, você chama session_start () novamente que este tempo continua a sessão, e então você pode recuperar valores a partir de $ _SESSION .


<? Php
/ / Continuar a sessão
session_start ();
/ / Recuperar dados da sessão
echo "Username =" . $ _SESSION [ "username" ];


Este exemplo é uma demonstração muito simples de armazenar e recuperar dados em uma sessão. No primeiro roteiro, o valor "Callum" foi associado com o "username" chave na _SESSION $ array. No segundo script, a informação foi solicitada volta do _SESSION $ array usando a chave. $ _SESSION permite armazenar e recuperar informações através da página de pedidos de sessão ativa do usuário de navegação.


Encerrando uma Sessão
Tão importante como é para iniciar uma sessão, por isso é para acabar com uma. Mesmo que uma sessão é apenas uma forma temporária para armazenar dados, é muito importante para limpar depois de si mesmo para garantir a máxima segurança ao lidar com informações potencialmente sensíveis. É também de boas práticas e evitar que uma enorme quantidade de dados de sessão velho sentado no servidor.
Para excluir um valor única sessão, utilize o unset () função:


<? Php
session_start ();
/ / Apagar o valor nome de usuário


unset ( $ _SESSION [ "username" ]);
Para remover todos os valores da sessão, você pode usar o session_unset () função:


<? Php
session_start ();
/ / Excluir todos os valores da sessão
session_unset ();


Ambos os exemplos afetam apenas os dados armazenados na sessão, e não a própria sessão. Você ainda pode armazenar outros valores para $ _SESSION após chamá-los, se assim escolherem. Se você deseja parar completamente usando a sessão, por exemplo, um usuário faz logoff, você usar o session_destroy () função.


<? Php
session_start ();
/ / Encerrar a sessão
session_destroy ();


Eu altamente recomendável que quando você tem certeza que não precisa mais a sessão que você destruí-lo usando session_destroy () , ao invés de apenas unsetting todos os seus valores com session_unset () . Se você só unset todo o valor, a própria sessão ainda está ativa e códigos maliciosos poderia dar essas sessões valores nocivos.
Que é sessões em poucas palavras, a funcionalidade muito básicos, mas muito poderosa dentro do PHP que fornece uma solução elegante para o problema da passagem de dados entre as páginas web.


Dicas de segurança da sessão
Apesar de haver simplicidade, ainda há maneiras usando sessões pode dar errado. Aqui está um resumo rápido de algumas técnicas de segurança você pode usar para garantir que você está usando sessões com segurança.
Session Time-Outs


O tempo limite de sessões é uma ação muito importante se você está lidando com os usuários registrados no seu website ou aplicação. Se um usuário faz em seu site em um cibercafé e depois deixa o computador e café sem sair, como você parar o próximo usuário no computador de ainda ter acesso a sessão do usuário anterior? Bem, você pode usar o seguinte código:


<? Php
session_start ();
/ / Set período de tempo limite (em segundos)
$ Inativos = 600;

/ / Verifique se $ _SESSION ["timeout"] é definido
se (isset ( $ _SESSION [ "timeout" ])) {
    / / Calcular "time to live" da sessão
    $ SessionTTL = time () - $ _SESSION [ "timeout" ];
    se ( $ sessionTTL > $ inativos ) {
        session_destroy ();
        header ( "Location: / logout.php" );
    }
}


$ _SESSION [ "timeout" ] = time ();
O código garante que, se não houver nenhuma atividade por mais de 600 segundos (10 minutos) a solicitação é redirecionada para a página de logout que com sucesso log out do usuário.


Regenerar o ID da sessão
O session_regenerate_id () função cria um novo e exclusivo-ID para representar a sessão do usuário atual. Isto deve ser regenerado tempo qualquer ação importante é a autenticação realizada, como fazer login ou atualização de dados perfil de usuário. Dando as sessões de uma nova identidade após essas ações tornam sua aplicação mais segura, reduzindo o risco de um ataque específico conhecido como "seqüestro de sessão."


<? Php
session_start ();


se ( $ _POST [ "username" ] == "admin" & & $ _POST [ "senha" ] == sha1 ( "password" )) {
    $ _SESSION [ "autorizado" ] = true;
    session_regenerate_id ();
}


Destruir Sessions
Como já foi mencionado anteriormente, você deve usar session_destory () uma vez que você não precisa usar a sessão mais. Isto impede que os atacantes sequestrar a sessão obsoleto, uma vez mais aumentando a segurança da sessão relacionados de seu web site.
Use Armazenamento Permanente


Use um banco de dados para armazenar dados no mais curto momento em que você sabe que os dados vão ser persistente, não deixá-lo permanecer como parte da sessão por muito tempo, pois isso abre-se para um possível ataque. Realmente pensar sobre se os dados pertence deve ser armazenada em $ _SESSION porque os dados da sessão se destina a ser transitória.

Nenhum comentário :

Postar um comentário

Total de visualizações de página