Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Alguém sabe dizer porque não consigo trabalhar com SESSION quando no meu PHP.INI consta session.auto_start = 0 ? Se AUTO_START está OFF, quando eu abro uma sessão numa página, não consigo recuperá-la na página seguinte.
Obs: estou utilizando o WampServer 2.2
Estou usando em todas as páginas o seguinte, vou resumir:
<?php
// inicia a sessão
session_start();
// grava ou armazena algo na sessão, exemplo:
echo 'Último acesso: '.@$_SESSION['ultimo_acesso'];
$_SESSION['ultimo_acesso'] = date('Y-m-d H:i:s');
echo '; Agora: '.@$_SESSION['ultimo_acesso'];
// dá um commit
session_commit();
?>
Na página seguinte, o mesmo código não exibe o "Último acesso" (a variável 'ultimo_acesso' está em branco). Só exibe se o session.auto_start = 1 no PHP.INI e, mesmo se eu não executar o "session_commit()" não exibe o "Último acesso" na página seguinte caso session.auto_start = 0.
O erro é claro: arroba, você está escondendo o erro. Quando você precisa acessar um campo em um array que você não possui certeza da presença do mesmo, você deve usar isset, não esconder o erro (Notice: undefined index).
E o session_commit não é necessário.
<?php
session_start();
echo 'Último acesso: ' . isset($_SESSION['ultimo_acesso']) ? $_SESSION['ultimo_acesso'] : null;
$_SESSION['ultimo_acesso'] = date('Y-m-d H:i:s');
echo '; Agora: ' . $_SESSION['ultimo_acesso'];Retirei o arroba ( @ ) e acontece a mesma coisa, sem erros suprimidos. Verifiquei com isset e a variável na session está definida sim. Realmente não entendo o que acontece.
No início do script (depois da abertura do PHP), coloque:
error_reporting(E_ALL|E_STRICT);
Você precisa usar o session_start.
http://php.net/manual/en/function.session-start.php