Funções para Sessão
PHP Manual

session_start

(PHP 4, PHP 5, PHP 7)

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

Descrição

bool session_start ([ array $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.

Parâmetros

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.

Valor Retornado

Esta função retorna TRUE se uma sessão foi iniciada com sucesso, caso contrário FALSE.

Changelog

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.

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 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>';
?>

Fornecendo configurações para session_start()

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,
]);

Notas

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.

Veja Também


Funções para Sessão
PHP Manual