Jump to content
Sign in to follow this  
Gose

timeout

Recommended Posts

Gose

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 .  🤔

Share this post


Link to post
Share on other sites
pedrotuga

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.

Share this post


Link to post
Share on other sites
Gose

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 =(

Share this post


Link to post
Share on other sites
The Loser

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.


I intend to live forever. So far so good.

Share this post


Link to post
Share on other sites
pedrotuga
//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();
}

Share this post


Link to post
Share on other sites
Gose

//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.

Share this post


Link to post
Share on other sites
Gose

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.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.