Como iniciar uma sessão PHP

A chave para usar sessões PHP é a session_start () função. Você chama session_start () em cada página e, posteriormente, ter acesso a todos os itens do $ _SESSION array.

Pode parecer um pouco de um nome estranho para a função, session_start (), porque na maioria das páginas que você realmente só quero continuar a sessão e acessar as variáveis ​​que estão lá. Mas na realidade, session_start () faz as duas coisas: Começa uma nova sessão, se necessário, e continua uma sessão existente se for o caso.

o session_start () função é chamada simplesmente assim:

? lt; phpsession_start () - // Outros declarações PHP aqui>?

Aqui está o código para algumas páginas que rastreiam quando você acessou a primeira página do aplicativo. Esta mostra a utilização do session_start () função e, em seguida, a criação de uma variável para manter o tempo de acesso inicial.

Aqui está o código para a primeira página, chamada page1.php.

? Lt; phpsession_start () - $ _ SESSION [ 'accessTime'] = data ( "M / d / Y g: i: sa") - print "Esta é a página 1
"-print" Você acessou o aplicativo em: ". $ _SESSION [ 'AccessTime'] - print"? "->

Quando visto em um navegador, a página se parece com o seguinte:

image0.jpg

A próxima página no aplicativo, em seguida, inicia a sessão e pode acessar todas as variáveis ​​já definidas na sessão. Aqui está o código para a segunda página, page2.php.

lt;? phpsession_start () - print "Esta é a página 2
"-print" Você acessou o aplicativo em: ". $ _SESSION [ 'AccessTime'] - print"? "->

Repare no código que a variável $ _SESSION [ 'AccessTime'] não está definido de novo, mas apenas acessada após a sessão é iniciada. Quando você está em page1.php e clique no link para ir para a página seguinte, você recebe uma página como esta:

image1.jpg

Você pode armazenar praticamente qualquer coisa em uma sessão, mas você deve estar ciente de que sessão pode, e às vezes não, desaparecer por uma variedade de razões. Uma razão de uma sessão podem desaparecer é que ele expira. Se os usuários se sentar em uma página por muito tempo, a sessão pode não estar lá quando começar a usar o aplicativo novamente.

A implicação prática do desaparecimento sessão é que todas as variáveis ​​que você definiu anteriormente também desaparecerá. Portanto, é recomendável verificar se a sessão contém os valores que você espera antes de usá-los.

Existem algumas maneiras de fazer isso. Uma forma seria a de verificar todas as variáveis ​​antes de acessá-los. Por exemplo, você pode alterar o código para verificar o $ _SESSION [ 'AccessTime'] variável antes de usá-lo na saída.

? Lt; phpsession_start () -if (! isset ($ _ SESSION [ 'accessTime'])) {morrer (header ( "Location: page1.php")) -}imprimir "Esta é a página 2
"-print" Você acessou o aplicativo em: ". $ _SESSION [ 'AccessTime'] - print"? "->

Este anúncio adicionado o seguinte código:

if (! isset ($ _ SESSION [ 'accessTime'])) {die (header ( "Location: page1.php")) -}

A localização desse código é importante. Uma vez que o código necessário para enviar um cabeçalho HTTP, é necessário que aparecem antes de qualquer outra saída. Assim, por exemplo, se esse código que aparece abaixo da saída "Esta é a página 2", ele não iria funcionar porque os cabeçalhos já foram enviados. O código aparece antes de qualquer saída, mas também importante, aparece após o session_start () função.

A melhor prática é verificar a existência de variáveis ​​de sessão antes de usá-los, como apenas mostrado. No entanto, ele pode ficar bastante complicado para verificar todas as variáveis ​​que você pode usar em uma grande aplicação. Com isso em mente, uma outra opção é definir uma variável de sessão global e verificar a sua existência, em vez de cada variável individualmente. Veja como fazer isso.

Aqui é uma versão atualizada do código, page1.php. Neste código, há uma única adição, uma nova variável de sessão chamada appStarted.

? Lt; phpsession_start () -$ _SESSION [ 'AppStarted'] = verdade-$ _SESSION [ 'AccessTime'] = data ( "M / d / Y g: i: sa") - print "Esta é a página 1
"-print" Você acessou o aplicativo em: ". $ _SESSION [ 'AccessTime'] - print"? "->

Você pode então alterar outras páginas no aplicativo para verificar a existência dessa variável, como na mudança observou.

? Lt;! Phpsession_start () - if (isset ($ _ SESSION [ 'appStarted'])) {Die (header ( "Location: page1.php")) -} print "Esta é a página 2
"-print" Você acessou o aplicativo em: ". $ _SESSION [ 'AccessTime'] - print"? "->

menu