Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal, tudo bem ? eu to tendo dificuldade no controle de sessão, tipo, quando o login da certo o codigo que e ativado é esse aqui:
if(mysql_num_rows($result) == '0') {
$msg = "Erro - Usuario ou Senha inválido !";
} else {
session_start();
$_SESSION["login"] = mysql_fetch_assoc($result);
header("Location: main.php");
}
beleza, mas olha como ta meu codigo de controle de sessao e logout:
<?php
session_start();
if (!isset($_SESSION['login'])
|| $_SESSION['login'] !== true) {
header('Location: index.php');
exit;
}
?>
<?
session_start();
session_destroy();
session_unset();
echo "<script type='text/javascript'>location.href='index.php';</script>";
?>
Só que tipo, n ta funcionando, oque tem de errado ?
Pq tu num faz simplesmente...
$_SESSION['login'] = false;
session_start(); deve vir antes de qualquer código que você faça no php.
Tem que ser a primeira linha do código
<?php session_start();
/ Aqui vem o seu bloco de códigos /
?>
Mas como você pode ver eu iniciei com session_start()
No caso do controle de inatividade, quando eu incluo ele, simplesmente nao abre a outra pagina quando lcico no link, continua na mesma.
Jah no caso do logout, quando clico em sair ele vai redirecionar pra index.php mas dai lah checa se ta logado, se tiver manda devota pra main.php, e ele fica fazendo isso, tipo como senão desse um destroy na session.
Esse controle que você quer é feito com session_cache_expire()
Não precisa de uma pagina só pra isso.
atualizei de acordo como o Prog disse e deu certo :D
logout.php
<?
session_start();
$_SESSION['login'] = false;
session_destroy();
session_unset();
echo "<script type='text/javascript'>location.href='index.php';</script>";
?>
Agora soh falta arrumar o checaLogin.php
O meu checaLogin ta assim:
<?php
session_start();
if (!isset($_SESSION['login']) || $_SESSION['login'] !== true) {
$msgsession = "Tempo limite da sessão esgotado !";
header('Location: index.php');
exit;
}
?>
Como adaptaria esse session_cache_expire() ?
É só ler o que a função faz clicando no link que postei (nome da função sublinhado).
Ta em português. Basta usar a função antes do session_start. Ao fim do tempo determinado
o cache expira e o login é solicitado novamente.
li lah mas nao entendi como ficaria a parte pra verificar se a session existe e dai caso nao encaminhar pro index.php, pois acredito que ele nao faca isso automaticamente neh ?
olha como ficou o codigo agora:
<?php
session_cache_expire();
session_start();
if (!isset($_SESSION['login']) || $_SESSION['login'] !== true) {
$msgsession = "Tempo limite da sessão esgotado !";
header('Location: index.php');
exit;
}
?>Então leia novamente meu querido mas desta vez com um pouquinho mais de vontade
de aprender e menos vontade de terminar seu script sem dar a minima para instrução.
No post anterior eu disse "Ao fim do tempo determinado o cache expira e o login é
solicitado novamente."
>
Então leia novamente meu querido mas desta vez com um pouquinho mais de vontade
de aprender e menos vontade de terminar seu script sem dar a minima para instrução.
No post anterior eu disse "Ao fim do tempo determinado o cache expira e o login é
solicitado novamente."
Mas eu li e prestei atencao tb nessa parte em negrito, oque me deixou confuso eh: ele expira e volta automaticamente pro index.php ?
Ai depende do seu código. Se a sessão não existir mais, seu código faz oque?
Como disse antes a unica coisa a acrescentar é o session_cache_expire().
Os códigos que redirecionam caso a sessão não exista tem de permanecer.
oO QUE DOIDO, DEI UMA FUSSADA NO MEU CODIGO E AGORA FICOU DE BOA:
<?php
session_start();
if (!isset($_SESSION["login"])) {
header("Location: index.php");
}
?>
ah, esqueci de falar, muito obrigado a todos :D
Sinceramente não entendi o que você ta fazendo.