• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Gose

timeout

7 mensagens neste tópico

Boas pessoal. Estou a trabalhar em PHP juntamente com PSQL..uma linguagem muito parecida com MySQL. Estou com uma duvida..não estou a ver como se faz timeouts...ou seja..ao fazer um login duma determinada pessoa, ao fim de 5 minutos ele desliga-se automaticamente. Alguém me pode ajudar,ou então dizer como se faz?

Obrigado .  :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma forma simples sem estares a entrares em detalhes sobre como as sessões funcionam, é guardares uma variável na sessão com o timestamp de quando a sessão é iniciada, e a cada paina que carregas vez se o timestamp actual é 300 segundos (5 minutos) maior que o do inicio da sessão.

Só uma pequena correcção, espero que não leves a mal

MySQL não é uma linguagem, é um sistema de gestão de base de dados que usa a linguagem SQL.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma forma simples sem estares a entrares em detalhes sobre como as sessões funcionam, é guardares uma variável na sessão com o timestamp de quando a sessão é iniciada, e a cada paina que carregas vez se o timestamp actual é 300 segundos (5 minutos) maior que o do inicio da sessão.

Só uma pequena correcção, espero que não leves a mal

MySQL não é uma linguagem, é um sistema de gestão de base de dados que usa a linguagem SQL.

sim..tens toda a razão, e claruh k n levei a mal..alias,uma pessoa esta sempre a aprender=) É k sou novato em PHP.

Mas sugeres que meta isso onde? No login.php? desculpa mas não percebi =(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, quando o utilizador faz log-in, supondo que usas sessões para guardar os dados destes, basicamente o que terias que fazer era guardar o timestamp da altura do log-in (o timestamp é o número de segundos passados desde 1 de Janeiro de 1970) numa sessão, e depois sempre que houvesse um pageload ou algo do género, que fosse feita uma comparação do timestamp guardado, com o timestamp actual. Por exemplo, 5 minutos são 300 segundos, logo calculavas uma diferença entre o timestamp actual, com a do guardado, e caso a diferença fosse superior ou igual a 300, é porque já haviam passado os 5 minutos, e assim mandavas ordem para destruir a sessão.

Algumas funções úteis para isto são mktime e time.

Cumps.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
//no login podes por qq coisa tipo isto
$_SESSION["logintime"] = time();

//depois crias uma função tipo esta para chamar em todas as paginas
function logtimedout(){
if (time() - $_SESSION["logintime"] < 300){return true;}
return false;
}

//depois para verificar se o utilizador esta ligado...

if (!logtimedout()){
echo "Sessão expirada!";
die();
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

//no login podes por qq coisa tipo isto
$_SESSION["logintime"] = time();

//depois crias uma função tipo esta para chamar em todas as paginas
function logtimedout(){
if (time() - $_SESSION["logintime"] < 300){return true;}
return false;
}

//depois para verificar se o utilizador esta ligado...

if (!logtimedout()){
echo "Sessão expirada!";
die();
}

Pedrotuga...mais uma vez desculpa o incomodo. Mas tive sem net durante algum tempo. Mostrei o trabalho a um professor e ele diz k tenho mal feito a parte do timeout :)

eu tenho assim a pagina do login:

<?php
include('lib/lib.php');

include('inc/header.inc');
// this is the login page. 
?>

<?php
function show_login_form(){
?>
<form name='loginform' method='post'>
<div style="text-align:center;">
<div style="margin: 0px auto;width:25em;">
<fieldset style="width:25em;border:white solid 1px;background:#eee;text-align:left">
<label for="username">Username:</label> <input type="text" id="username" name="username" class="input-box"><br>
<label for="password">Password:</label> <input type="password" id="password" name="password" class="input-box"><br>
<input type="submit" name="login-button" value="login" class="submit-button">
</fieldset>
</div>
</div>
</form>

<?php
}

function doLogin()
{
$user = $_POST['username'];
$pwd = $_POST['password'];
if(($user != '') && ($pwd != ''))
{
	$pesquisa="select username,password,nome,apelido,tipo from login where username='$user' and password='$pwd'"; 
	$resultado=pg_exec($pesquisa) or die(pg_error());
	$num=pg_num_rows($resultado);
	if($num==1)
	{	
	while($reg=pg_fetch_array($resultado))
		{
		//echo "Login com sucesso!";
	    $_SESSION['type'] = $reg['tipo'];
		$_SESSION['name'] = $reg['nome'];
		$_SESSION['numero'] = $reg['username'];
		$_SESSION['apelido'] = $reg['apelido'];
		}
		$_SESSION['login'] == true;
		$_SESSION["login"] = time(); //meter em todas as paginas a xamar a função
			if($_SESSION['type'] == "Estudante")
			{
				//header ("location: alunos/aluno.php");
				//include('inc/header.inc');
				include("alunos/aluno.php");
			}
		    else if($_SESSION['type'] == "Professor")
			     {
				 //include('inc/header.inc');
				 include("professores/professor.php");
				 }
				 else if($_SESSION['type'] == "Administrador")
					{
					//include('inc/header.inc');
					include("administradores/admin.php");
					}
	}else{		
		echo "Falhou no login! Tente novamente!";	
	}	
}else{
?>
	<div class="errormsg">Username ou password incorrecto</div>
<?php
	show_login_form();
}
?>

<?php	
}
?>

<?php


// the submit button was pressed, it's a POST
if(isset($_POST['login-button']))
	doLogin();

// else, the first time, it's a GET
else{
	//include('inc/header.inc');
	// this is the login page. 
	show_login_form();
}


include('inc/footer.inc');
?>

o que sugeres que faça entao? tentei fazer da maneira k dixeste mas plos vistos não fiz da maneira correcta.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ah e ja agora...para cada pagina k eu faço..tenho istuh:

<?php

include('lib/lib.php');

if(!check_permission("Estudante"))
{
die;
}
include('inc/header_aluno.inc');
include('menu/aluno_menu.php');
include('alunos/aluno_notas.php');
include('inc/footer.inc');

?>

onde sugeres k meta a função timedout k dixeste?

é k no lib tenho uma pagina com uma função check_permission, ou seja para verificar se utilizou o login.

dcp o incomodo..mas tou msm a precisar de ajuda.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora