(PHP 4, PHP 5, PHP 7)
session_start — Inicia uma nova sessão ou resume uma sessão existente
$options
= []
] )session_start() cria uma sessão ou resume 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 open e read. Eles serão manipuladores de gravação internos (built-in) 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(). O callback read recuperará qualquer informação de sessão existente (armazenada em um formato serializado especial) e será deserializado e usado para preencher automaticamente a super global $_SESSION quando o callback read retornar de volta os dados salvos em sessão para o manipulador de sessão do PHP.
Para utilizar uma sessão com nome, execute session_name() antes de executar 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.
options
Se informado, este é um array associativo de opções que vão sobrepor os que estiverem configurados nas diretivas de configuração de sessão. As chaves não devem incluir o prefixo da 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.
Esta função retorna TRUE
se uma sessão foi iniciada com sucesso,
caso contrário FALSE
.
Versão | Descrição |
---|---|
7.0.0 |
O parâmetro options foi adicionado.
|
5.3.0 |
Se uma sessão falhar para iniciar, então é retornado FALSE .
Anteriormente, TRUE era retornado.
|
4.3.3 |
A partir do PHP 4.3.3, chamar session_start()
depois da sessão já ter iniciada resultará em um
erro de level E_NOTICE . E a
a segunda chamada para iniciar a sessão simplesmente será ignorada.
|
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 seção foi aceito
echo '<br /><a href="page2.php">page 2</a>';
// Ou talves passando o ID da seçã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
seção. Leia funções para sessão
para informações sobre propagação de
ids de sessão já que, por exemplo, explica tudo sobre 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']);
// Você pode querer usar o SID aqui, como fizemos em page1.php
echo '<br /><a href="page1.php">page 1</a>';
?>
Exemplo #3 Sobrepondo o tempo de duração de cookie
<?php
// Envia o 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 avitar
// que o arquivo de sessão seja travado e então bloqueie outras páginas
session_start([
'cookie_lifetime' => 86400,
'read_and_close' => true,
]);
Nota:
Para usar sessões baseadas em cookies, session_start() deve ser chamada antes de enviar qualquer saída (output) 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.