session_start
(PHP 4, PHP 5, PHP 7, PHP 8)
session_start — Inicia uma nova sessão ou continua uma sessão existente
Descrição
Quando session_start() é chamada ou quando uma sessão inicia automaticamente,
o PHP chamará os manipuladores de gravação de sessão de abertura e de leitura. Eles serão manipuladores de gravação internos
fornecidos por padrão ou por extensões do PHP (como SQLite ou Memcached); ou podem ser
manipuladores personalizados definidos por session_set_save_handler().
A função de leitura recuperará qualquer informação de sessão existente (armazenada em um formato serializado especial)
e será desserializado e usado para preencher automaticamente a variável super global $_SESSION quando a
função de leitura retornar os dados de sessão gravados para o tratamento de sessão do PHP.
Para utilizar uma sessão com nome,
session_name() deve ser chamada antes de
session_start().
Quando session.use_trans_sid
está habilitada, a função session_start()
registrará um manipulador de saída interno para a reescrita da URL.
Se um usuário usar ob_gzhandler
ou similar com
ob_start(), a ordem da função é importante para
saída/output adequado. Por exemplo,
ob_gzhandler
deve ser registrado antes de iniciar a sessão.
Parâmetros
options
-
Se informado, este é um array associativo de opções que irão substituir
os que estiverem configurados nas
diretivas de configuração de sessão.
As chaves não devem incluir o prefixo session.
.
Além do conjunto de diretivas de configuração comum, a opção
read_and_close
pode ser informada. Se definida como
true
, fará com que a sessão seja fechada imediatamente depois de
ser lida, evitando o bloqueio desnecessário caso os dados da sessão
não sejam alterados.
Valor Retornado
Esta função retorna true
se uma sessão foi iniciada com sucesso,
caso contrário false
.
Exemplos
Um exemplo básico de sessão
Exemplo #1 page1.php
<?php
// page1.php
session_start();
echo 'Bem vindo à página #1';
$_SESSION['favcolor'] = 'green';
$_SESSION['animal'] = 'cat';
$_SESSION['time'] = time();
// Funciona se o cookie de sessão foi aceito
echo '<br /><a href="page2.php">page 2</a>';
// Ou talvez passando o ID da sessão se necessário
echo '<br /><a href="page2.php?' . SID . '">page 2</a>';
?>
Após acessar page1.php, a segunda página
page2.php magicamente terá os dados da
sessão. Leia funções para sessão
para informações sobre propagação de
IDs de sessão já que, por exemplo, explica o que é a constante
SID
.
Exemplo #2 page2.php
<?php
// page2.php
session_start();
echo 'Bem vindo à página #2<br />';
echo $_SESSION['favcolor']; // green
echo $_SESSION['animal']; // cat
echo date('Y m d H:i:s', $_SESSION['time']);
// Pode ser desejado usar o SID aqui, como foi feito em page1.php
echo '<br /><a href="page1.php">page 1</a>';
?>
Fornecendo configurações para session_start()
Exemplo #3 Sobrepondo o tempo de duração de cookie
<?php
// Isto envia um cookie persistente que dura um dia
session_start([
'cookie_lifetime' => 86400,
]);
?>
Exemplo #4 Lendo e fechando a sessão
<?php
// Se não houver necessidade de alterar nada na
// sessão, pode-se apenas lê-la e já fechá-la para evitar
// travar o arquivo de sessão e bloquear outras páginas
session_start([
'cookie_lifetime' => 86400,
'read_and_close' => true,
]);
Notas
Nota:
Para usar sessões baseadas em cookies, session_start()
deve ser chamada antes de enviar qualquer saída para o browser.
Nota:
O uso de zlib.output_compression
é recomendado ao invés de ob_gzhandler()
Nota:
Esta função envia vários cabeçalhos HTTP dependendo da
configuração. Veja session_cache_limiter() para
personalizar estes cabeçalhos.