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
session_start() cria uma sessão ou continua a sessão atual baseado em um ID de sessão passado via GET ou POST, ou passado via cookie.
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 comotrue
, 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
.
Registro de Alterações
Versão | Descrição |
---|---|
7.1.0 |
session_start() agora retorna false e não mais
inicializa $_SESSION quando este falha em iniciar a
sessão.
|
Exemplos
Um exemplo básico de sessão
Example #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
.
Example #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()
Example #3 Sobrepondo o tempo de duração de cookie
<?php
// Isto envia um cookie persistente que dura um dia
session_start([
'cookie_lifetime' => 86400,
]);
?>
Example #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
Note:
Para usar sessões baseadas em cookies, session_start() deve ser chamada antes de enviar qualquer saída para o browser.
Note:
O uso de zlib.output_compression é recomendado ao invés de ob_gzhandler()
Note:
Esta função envia vários cabeçalhos HTTP dependendo da configuração. Veja session_cache_limiter() para personalizar estes cabeçalhos.
Veja Também
- $_SESSION
- session.auto_start (diretiva de configuração)
- session_id() - Obtém e/ou define o id de sessão atual