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

# 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

function 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

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.

### Veja Também

- $_SESSION
- session.auto_start (diretiva de configuração)
- session_id() - Obtém e/ou define o id de sessão atual

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open