session_start

(PHP 4, PHP 5, PHP 7, PHP 8)

session_startInicia uma nova sessão ou continua uma sessão existente

Descrição

session_start(array $options = []): bool

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 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.

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