Definir o tempo limite da sessão em PHP
-
Use as funções
session_unset()
esession_destroy()
para definir o tempo limite de sessão em PHP -
Use a função
unset()
para definir o tempo limite da sessão em PHP -
Use a função
session_regenerate_id()
para alterar o ID da sessão atual em PHP
Este artigo irá apresentar um método para destruir a sessão em PHP usando as funções session_unset()
e session_destroy()
. Destruiremos a sessão após 30 minutos. Ele verifica o intervalo de tempo desde a última atividade até a hora atual para destruir a sessão.
Também demonstraremos outra maneira de definir o tempo limite da sessão em PHP usando a função unset()
. A função unset()
leva a variável de sessão como o parâmetro. Este método usa um array para armazenar a variável de sessão.
Apresentaremos outro método para invalidar o id da sessão atual usando a função session_regenerate_id()
. Esta função gera um novo id de sessão para a sessão atual destruindo o id de sessão anterior.
Use as funções session_unset()
e session_destroy()
para definir o tempo limite de sessão em PHP
Podemos usar a função session_unset()
para remover a configuração da variável $_SESSION
no tempo de execução e usar a função session_destroy()
para destruir a sessão do armazenamento. A função time()
retorna a hora atual. Podemos usar a variável $_SESSION
para armazenar o carimbo de data / hora da última atividade. Assim, podemos verificar a hora calculando as diferenças da última atividade até a hora atual. Desta forma, verificamos o intervalo de tempo de uma sessão.
Por exemplo, inicie a sessão no servidor com a função session_start()
. Verifique se a sessão foi criada com a função isset()
. Use o operador &&
para verificar a outra condição dentro da função issset()
. Subtraia a variável de sessão start
da função time()
e verifique o resultado se for maior que 1800. Use session_unset()
e session_destroy()
dentro da condição if
. Em seguida, exiba a mensagem dizendo que a sessão foi destruída. Fora da condição if
, crie uma variável de sessão $_SESSION['start']
e atribua a função time()
a ela para atualizar a sessão.
A condição if
falha porque a variável de sessão ainda não foi criada no exemplo abaixo. A sessão será criada quando a condição falhar. A sessão expira após 30 minutos se o usuário não enviar a solicitação ao servidor. A última parte da função isset()
verifica o tempo ativo total da sessão. 1800
denota 1800 segundos, o que equivale a 30 minutos. Se o tempo ativo total exceder 30 minutos, a condição if será verdadeira. Então, ele destrói a sessão. A saída do código corresponde à sessão sendo destruída após mais de 30 minutos do tempo ativo. Verifique o Manual do PHP para aprender mais sobre a função session_unset()
.
Código de exemplo:
# php 7.*
<?php
session_start();
if (isset($_SESSION['start']) && (time() - $_SESSION['start'] > 1800)) {
session_unset();
session_destroy();
echo "session destroyed";
}
$_SESSION['start'] = time();
?>
Resultado:
session destroyed
Use a função unset()
para definir o tempo limite da sessão em PHP
Podemos usar a função unset()
para destruir a sessão de uma variável de sessão particular no PHP. A função leva a variável $_SESSION
como parâmetro. Este método armazena a sessão em um array. Podemos usar a matriz associativa para armazenar o nome da sessão e a hora de início da sessão. Podemos usar a função time()
para obter a hora atual. Podemos verificar o intervalo de tempo da sessão seguindo o método mencionado acima, subtraindo o tempo da sessão ativa do tempo atual.
Por exemplo, use a função session_start()
para iniciar a sessão. Escreva uma variável de sessão $_SESSION['start']
e atribua um array associativo a ela. Escreva as chaves 0
e registered
e escreva os valores ativo
e time()
para as respectivas chaves. Verifique se o intervalo de tempo é superior a 30 minutos. Se a condição for verdadeira, escreva a função unset()
com $_SESSION['start']
como parâmetro. Em seguida, exiba a mensagem session destroyed
. Fora do bloco de condição if
, atualize a variável de sessão $_SESSION['start']
com a função time()
.
No exemplo abaixo, a matriz contém a variável de sessão. O valor da variável de sessão é ativo
. A função time()
cria o carimbo de data / hora atual no array, e a chave registered
mantém o valor. Por favor, verifique o Manual do PHP para aprender mais sobre a variável superglobal $_SESSION
.
Código de exemplo:
#php 7.x
<?php
session_start();
$_SESSION['start'] = array(0=> 'active', 'registered' => time())
if ((time() - $_SESSION['start']['registered']) > (60 * 30)) {
unset($_SESSION['start']);
echo "session destroyed";
}
$_SESSION['start'] = time();
?>
Resultado:
session destroyed
Use a função session_regenerate_id()
para alterar o ID da sessão atual em PHP
Podemos usar a função session_regenerate_id()
para alterar o id de sessão da sessão atual. Desta forma, podemos evitar que nosso script fixe a sessão. O valor booleano true
na função permite a geração de um novo id de sessão. Neste método, podemos imprimir o id da sessão usando a função session_id()
antes e depois da regeneração do id da sessão. Mas a sessão não expira com a mudança do id da sessão. Ele apenas pede ao usuário para efetuar login novamente. Portanto, impede a fixação da sessão.
Por exemplo, inicie a sessão com a função session_id()
. Exibe o id da sessão atual usando a função session_id()
. Verifique se a sessão foi criada e crie uma sessão $_SESSION['start']
e atribua a função time()
. Encontre o intervalo de tempo em que a sessão está ativa, como fizemos no método acima. Se a condição for verdadeira, use a função session_regenerate_id(true)
. Atualize a variável de sessão. No final do script, imprima o novo id de sessão com a função session_id()
.
Código de exemplo:
#php 7.x
<?php
session_start();
print("Old: ".session_id());
echo "<br>";
if (!isset($_SESSION['start'])) {
$_SESSION['start'] = time();
} else if (time() - $_SESSION['start'] > 1800) {
session_regenerate_id(true);
$_SESSION['start'] = time();
}
print("Now: ".session_id());
?>
Resultado:
Old: t38kssej37un38mtsoa6lovh05
Now: mak7i3in708c6rl2udd8gbfo3r
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn