Auto logud.

Tags:    php

Så er Rasmus på banen igen med et nyt spg. (Dog et af de nemme) Hvilken kode skal man bruge for at brugeren automatisk bliver logget ud efter 2 timer ? Hvis brugeren ikke er aktiv :P eller bare bliver logget ud efter 2 timer ;)

// Rasmus Kjeldsen



6 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 6 karma
Sorter efter stemmer Sorter efter dato
Hvis du fx bruger sessions til at styre login, bliver de automatisk logget ud, hvis de ikke er aktive i x antal minutter (mener det er typisk 15 min).

mikl-dk | udv@mikl.dk



Hver gang en bruger, der er logget ind, skifter side. Sætter du en session med tidspunktet han sidst har været aktiv:

if((time()-$_SESSION['lastActive'] <7200) && session_is_registered("brugernavn") AND ("kodeord")) //7200 er 2 timer i sekunder
$_SESSION['lastActive'] = time();
else
{
unset($_SESSION['brugernavn']);
unset($_SESSION['kodeord']);
}

Den checker, først om forskellen mellem den nuværende tid og tidspunktet han sidst var aktiv er mindre end 2 timer.
Hvis det er mindre, så opdatere den $_SESSION['lastActive'] til den nuværende tid.
Hvis der er gået mere end 2 timer så udføre den noget kode der logger brugeren ud.

Du skal også lige huske at indsætte:
$_SESSION['lastActive'] = time();

Når man logger ind.

Hilsen

Martin Dybdal (Dybber)



login.php

<?
session_start();
include "config.php";
?>
<html>

<body bgcolor="#5B7B8F">

<head>

<LINK HREF="style.css" REL=STYLESHEET>

</head>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<link href="" type="text/css" rel="stylesheet">
</head>

<?
if($_POST[action] == 'login') {
if($_POST[brugernavn] == NULL OR $_POST[kodeord] == NULL) {

} else {

$s_tjekbruger = mysql_query("SELECT brugernavn, kodeord FROM community WHERE brugernavn LIKE '$_POST[brugernavn]' AND kodeord = '$_POST[kodeord]'");
$tjekbruger = mysql_fetch_array($s_tjekbruger);
if($tjekbruger[brugernavn] == NULL) {

print "<script language=\\"javascript\\">parent.location.replace('?side=login&login=nej');</script>";

} else {

$_SESSION[brugernavn] = $_POST[brugernavn];
$_SESSION[kodeord] = $_POST[kodeord];
$tid = date('h:i:s');
mysql_query("UPDATE community SET online = 'ja', logintid = '$tid' WHERE brugernavn = '$_SESSION[brugernavn]'") or die(mysql_error());

$fejl == 'nej';
print "<script language=\\"javascript\\">parent.location.replace('loggetind.php');</script>";
}
}
} else {
}
?>
<?
if($_GET[login] == "nej")
{
print "<b>Forkert kodeord eller brugernavn!</b>";
}
?>
<form action="login.php" method="POST">
<input type="hidden" name="action" value="login">
Brugernavn<br>
<input type="text" class="input" name="brugernavn" size="20" maxlength="20"><br>
Kodeord<br>
<input type="password" class="input" name="kodeord" size="20" maxlength="20"><br>
<br>
<input type="submit" class="input" value="Login" name="login">
</form>
</body>
</html>¨

loggetind.php

<?
session_start();
if (session_is_registered("brugernavn") AND ("kodeord")) {
include "config.php";
$hent = mysql_query("SELECT * FROM community WHERE brugernavn = '$_SESSION[brugernavn]'") or die(mysql_error());
$vis = mysql_fetch_array($hent);
?>

<body bgcolor="#5B7B8F">

<head>

<LINK HREF="style.css" REL=STYLESHEET>

</head>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<link href="" type="text/css" rel="stylesheet">
</head>
<body>

<?
if($vis[status] == "admin")
{
print "<div align=center>Du er logget ind som: $_SESSION[brugernavn]Din status på www.specks.dk er: $vis[status]<hr color=#000000 size=1><a href=http://www.specks.dk/admin/admin/site.php>Gå til community</a>";
}
if($vis[status] == "chef reporter")
{
print "<div align=center>Du er logget ind som: $_SESSION[brugernavn]Din status på www.specks.dk er: $vis[status]<hr color=#000000 size=1><a href=http://www.specks.dk/admin/chefreporter/site.php>Gå til community</a>";
}
if($vis[status] == "reporter")
{
print "<div align=center>Du er logget ind som: $_SESSION[brugernavn]Din status på www.specks.dk er: $vis[status]<hr color=#000000 size=1><a href=http://www.specks.dk/admin/reporter/site.php>Gå til community</a>";
}
if($vis[status] == "prøve reporter")
{
print "<div align=center>Du er logget ind som: $_SESSION[brugernavn]Din status på www.specks.dk er: $vis[status]<hr color=#000000 size=1><a href=http://www.specks.dk/admin/provereporter/site.php>Gå til community</a>";
}
if($vis[status] == "normal")
{
print "<div align=center>Du er logget ind som: $_SESSION[brugernavn]Din status på www.specks.dk er: $vis[status]<hr color=#000000 size=1><a href=http://www.specks.dk/admin/normal/site.php>Gå til community</a>";
}
if($vis[status] == "vip")
{
print "<div align=center>Du er logget ind som: $_SESSION[brugernavn]Din status på www.specks.dk er: $vis[status]<hr color=#000000 size=1><a href=http://www.specks.dk/admin/vip/site.php>Gå til community</a>";
}
?>
</body>
</html>
<?
}else{
print "Du er ikke logget ind.";
}
?>

Den logger ikke automatisk ud !!! SLET IKKE!



Altså den kode if((time()-$_SESSION['lastActive'] = time() <7200) && session_is_registered("brugernavn") AND ("kodeord")) //7200 er 2 timer i sekunder
$_SESSION['lastActive'] = time();
else
{
unset($_SESSION['brugernavn']);
unset($_SESSION['kodeord']);
}

skal indsættes på alle sider ?



På alle de sider hvor du vil checke om brugeren har været aktiv.

Hilsen

Martin Dybdal (Dybber)



[...]
skal indsættes på alle sider ?

Nej, du har vel organiseret det i nogle klasser eller i det mindste nogle funktioner, så du kan nøjes med at skrive det et enkelt sted?
--
Thus, I conclude



t