---
title: "utloggning"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/15853-utloggning"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Alpha II"
published: "2001-04-17T21:56:00.000Z"
updated: "2001-07-11T19:38:00.000Z"
replies: 37
views: 796
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/15853-utloggning"
---

# utloggning

_Sida 1 av 2._

## #1 — Alpha II, 2001-04-17T21:56Z

Hej!
Jag håller på med ett community (hatar egentligen såna men har inget annat att göra... ;) )

När man loggar in ändras värdet status i en mysql databas till online så att man ska kunna se vilka andra som är online.

Problemet är att om man inte loggar ut så som det är tänkt att man ska göra (klickar på logga ut) utan bara går till en annan sida eller stänger browsern så står det fortfarande att man är online. Hur får jag värdet i databasen att ändras om man inte är aktiv under ett visst antal minuter? :q

Permalänk: https://www.webforum.nu/p/15853

## #2 — Gislaved.net, 2001-04-17T22:29Z

Jag har bestämt för mig att det här har diskuterats tidigare... har du testat att söka?

Permalänk: https://www.webforum.nu/p/319655

## #3 — Alpha II, 2001-04-17T22:53Z

Ja men jag har inte hittat precis vad jag ville ha :(

Permalänk: https://www.webforum.nu/p/319656

## #4 — Gislaved.net, 2001-04-17T23:36Z

Kan det här vara något, kanske? <http://cgi.webforum.nu/wf/Forum12/HTML/000296.html>

Permalänk: https://www.webforum.nu/p/319657

## #5 — Alpha II, 2001-04-20T16:12Z

Hur ska jag göra då? Jag har 2 session som innehåller en variabel om man är inloggad ellèr inte och användarnamnet. Så man är ju inte inloggad längre när man stänger browsern men hur ska jag med den där koden göra så att värdet i databasen ändras? \*fattar ine\*

Permalänk: https://www.webforum.nu/p/319658

## #6 — nicclas, 2001-04-20T20:35Z

Så här kan man göra ett inloggningssystem med "sessions", tror jag. 

Jag har skapat 5 st filer: login.php4, verify.php4, secret.php3, secret2.php4 och logout.php4.

Jag har varit slarvig med HTML-koden, men sidorna skall fungera i alla fall. 

En demo finns på <http://www.nic-sys.se/gaboPHP/login.php4> 

**login.php4**

```
Välkommen till nic-gemenskapen.
<form name="logga" method="post" action="verify.php4">
Skriv lösenordet "hej":
<input type="password" name="pass">
<input type="submit" value="continue">
</form>
```

**verify.php4**

```
<? 
if ($pass=="hej"){
session_start(); 
session_register("ActiveAt"); 
session_register("pass");
$ActiveAt=time();
?>
Välkommen, du har nu loggat in på vår genemskap.<br><br>

Nu när du är inloggad kan du besöka våra hemliga sidor :)
<a href="http://www.nic-sys.se/gaboPHP/secret.php4">
Här</a> finns den första sidan secret.php4.
<?
}else{
?> 
Inloggningen misslyckades, gå tillbaka och prova igen.
<?
}
?>
```

**secret.php4**

```
<? 
session_start(); 
if(!isset($ActiveAt)){
echo "Tyvärr, denna sida kan bara ses om du är inloggad.<br>";
exit;
}
if(isset($ActiveAt) && time()-$ActiveAt>60){
echo "Din session har runnit ut:)";
echo " Logga in igen <a href=http://www.nic-sys.se/gaboPHP/login.php4>här</a>.";
exit;
}
$ActiveAt=time(); echo "<i>Uppdaterar sessionen!</i><br><br>";
?>
Hej, <br><br>
Här finns den hemiliga informationen: salccin<br><br>
Du kan också få fler hemligheter på sidan 
<a href="http://www.nic-sys.se/gaboPHP/secret2.php4">secret2.php4</a>.
```

**secret2.php4**

```
<? 
session_start(); 
if(!isset($ActiveAt)){
echo "Tyvärr, denna sida kan bara ses om du är inloggad.<br>";
exit;
}
if(isset($ActiveAt) && time()-$ActiveAt>60){
echo "Din session har runnit ut:)";
echo " Logga in igen <a href=http://www.nic-sys.se/gaboPHP/login.php4>här</a>.";
exit;
}
$ActiveAt=time(); echo "<i>Uppdaterar sessionen!</i><br><br>";
?>
Hej, <br><br>
Här finns den hemiliga informationen: salccin blir nicclas baklänges.<br><br>
Läs hemligheter på den första sidan 
<a href="http://www.nic-sys.se/gaboPHP/secret.php4">secret.php4</a> igen om du vill.<br><br>

Klicka <a href="http://www.nic-sys.se/gaboPHP/logout.php4">här</a> för att logga ut!
```

**logout.php4**

```
<? 
session_start(); 
session_destroy(); 
?>
Du har nu loggat ut.<br>
Försök komma på de hemliga sidorna nu,
<a href="http://www.nic-sys.se/gaboPHP/secret2.php4">secret.php4</a> och
<a href="http://www.nic-sys.se/gaboPHP/secret2.php4">secret2.php4</a>.
```

Man loggar ut genom att gå till sidan logout.php4. Gör man inte det så kommer inloggningen att sluta fungera efter 60 sekunder, och du måste logga in igen.

Naturligtvis måste PHP4 köras. Jag har aldrig provat sessions förut så detta går säkert att göra säkrare/bättre, kanske?

Red: Aj då, du kanske vill ändra i din databas också... Ja då blir du nog så illa tvungen att komplettera med en lista över användare som laddat någon "hemlig" sida den senaste miuten som lagras på servern. Kod för detta finns i trådan som Gislaved gav ovan.

/nicclas - [www.nyhetsrubriker.com](http://www.nyhetsrubriker.com) 

\[Redigerat av nicclas den 20 apr 2001\]

\[Redigerat av nicclas den 20 apr 2001\]

Permalänk: https://www.webforum.nu/p/319659

## #7 — Alpha II, 2001-04-21T14:21Z

Går det inte på nått sätt göra så ett en kod körs tex 1 gång i minuten? :q

Permalänk: https://www.webforum.nu/p/319660

## #8 — nicclas, 2001-04-21T15:14Z

Jo, men vad skall du med det till?

Permalänk: https://www.webforum.nu/p/319661

## #9 — Alpha II, 2001-04-21T15:46Z

Man kan ju kolla om användaren har gjort nått inom tex 10 min och om den inte har det så ändras värdet i databasen till offline. :)

Permalänk: https://www.webforum.nu/p/319662

## #10 — nicclas, 2001-04-21T15:53Z

Och hur har du tänkt att "kolla om användaren har gjort nått inom tex 10 min"?

Jag misstänker att du behöver koden på <http://cgi.webforum.nu/wf/Forum12/HTML/000296.html>  för att göra detta, eller?

Tror knappast att sessions (med det stöd som det nu finns för sessions i PHP 4) kommer att lösa dina problem :( 

Red: Vänta, det går nog. Listan som används i den kod som jag hänvisar till ovan gör du om till en lista med användarnamn och tidstämpel. Denna lista kan du nu lagra i en session istället för den textfil som används i koden tidiagre. Lycka till ;)

/nicclas

\[Redigerat av nicclas den 21 apr 2001\]

Permalänk: https://www.webforum.nu/p/319663

## #11 — Alpha II, 2001-04-21T23:01Z

Finns det nån funktin för att få fram vilken tid det är så som jag har gjort fungerar det inte, eller är det nått annat fel i koden?

checkuser.inc.php

```
<?php
session_start();
$time = getdate(time());
$time = "$time[hours]:$time[minutes]:$time[seconds]";

mysql_connect($database,$db_username,$db_password);
mysql_select_db($db);

function logedin() {
$query = "SELECT status FROM users WHERE username='$username'";
$result = mysql_query($query);
$status = mysql_fetch_array($result);

if ($status[0]=="online")
 return true;
else
 return false;
}

if(logedin()) {
 $query = "UPDATE users SET lactive='$time' WHERE username='$username'";
 $result = mysql_query($query);
}

$query = "SELECT username FROM users WHERE status='online'";
$result = mysql_query($query);

while($name = mysql_fetch_array($result)) {
  $query = "SELECT lactive FROM users WHERE status='$name[0]'";
  $result2 = mysql_query($query);
  $lactive = mysql_fetch_row($result2);
  if($lactive[0]>$time-60*20) {  //HÄR BLIR DET FEL! :(
   $query = "UPDATE users SET status='offline' WHERE username='$name[0]'";
   $update = mysql_query($query);
  }
}

?>
```

Permalänk: https://www.webforum.nu/p/319664

## #12 — sgtpepper, 2001-04-21T23:32Z

Kör ett schemalagt jobb som går igång en gång i minuten och uppdaterar onlinestatusen.

Du kan också lägga en motsvarande funktion på en välbesökt sida. När någon begär denna sida så rensas ej aktiva medlemmars onlinestatus bort.

Permalänk: https://www.webforum.nu/p/319665

## #13 — stevenet, 2001-04-22T09:48Z

Varför använder du inte bara lactive-kolumnen för att kontrollera om användaren är inloggad?

\------------------
[SteveNet](http://www.webmarkit.net/stevenet)

Permalänk: https://www.webforum.nu/p/319666

## #14 — Alpha II, 2001-04-22T12:24Z

Hur kontroller man att ett timedate datum är 20 minuter gammal? För mig fungerar det inte att skriva: if(lactive\[0\]\<$timeout)

```
<?php
	session_start();
	$time = getdate(time());
	$timenow = "$time[year]-$time[mon]-$time[mday] $time[hours]:$time[minutes]:$time[seconds]";
	$minutes = $time[minutes]-20;
	$timeout = "$time[year]-$time[mon]-$time[mday] $time[hours]:$minutes:$time[seconds]";
	$online = false;

	mysql_connect($database,$db_username,$db_password);
	mysql_select_db($db);

	#Kollar om användaren är online isf. $status = true!
	$query = "SELECT status FROM users WHERE username='$username' and password='$password'";
	$result = mysql_query($query);
	$status = mysql_fetch_array($result);

	if ($status[0]=="online")
		$online = true;
	else
		$online = false;

	if($online) {
		$query = "UPDATE users SET lactive='$timenow' WHERE username='$username'";
		$result = mysql_query($query);
	}

	$query = "SELECT username FROM users WHERE status='online'";
	$result = mysql_query($query);

	while($name = mysql_fetch_array($result)) {
		$query = "SELECT lactive FROM users WHERE status='$name[0]'";
		$result2 = mysql_query($query);
		$lactive = mysql_fetch_row($result2);
		if($lactive[0]==$timeout) {  //HÄR BLIR DET FEL! :(
			$query = "UPDATE users SET status='offline' WHERE username='$name[0]'";
			$update = mysql_query($query);
		}
	}

	if(!$online)
		Header("Location: index.php");

?>
```

Permalänk: https://www.webforum.nu/p/319667

## #15 — nicclas, 2001-04-22T12:47Z

Jag skulle ha sparat time() i databasen, då blir det lättare att jämföra :)

Permalänk: https://www.webforum.nu/p/319668

## #16 — stevenet, 2001-04-22T14:02Z

fummel, ta bort.
\------------------
[SteveNet](http://www.webmarkit.net/stevenet)

Permalänk: https://www.webforum.nu/p/319669

## #17 — stevenet, 2001-04-22T14:02Z

Det var det jag menade, fast jag missade att han inte timestamp.

```
<?

$min="20";
$sek=$min*60;
$tid=time();

$found = mysql_num_rows(mysql_query("select * from users where username ='$username' and password = '$password'"));

if ($found) {
$user = mysql_fetch_array(mysql_query("select * from users where username ='$username' and password = '$password'"));
$online=$user[lactive]+$sek;
if ($tid<$online) {
mysql_query("UPDATE users SET lactive='$tid' where username ='$username' and password = '$password'");
echo "Inloggad.";
}
else {
echo "Du har inte varit aktiv på 20 minuter!";
}
}
else {
echo "Fel lösenord och/eller användarnamn.";
}
?>
```

\------------------
[SteveNet](http://www.webmarkit.net/stevenet)

Permalänk: https://www.webforum.nu/p/319670

## #18 — Alpha II, 2001-04-22T14:50Z

Ska lactive vara timestamp, eller?

Permalänk: https://www.webforum.nu/p/319671

## #19 — stevenet, 2001-04-22T14:58Z

Jupp

\------------------
[SteveNet](http://www.webmarkit.net/stevenet)

Permalänk: https://www.webforum.nu/p/319672

## #20 — Alpha II, 2001-04-22T16:24Z

Jag skrev om koden lite men nu får jag parse error på rad 23! :(

```
<?php
	session_start();
	$min="20";
	$sek=$min*60;
	$tid=time();

	mysql_connect($database,$db_username,$db_password);
	mysql_select_db($db);

	$found = mysql_num_rows(mysql_query("select * from users where username = '$username' and password = '$password'"));

	if ($found) {
		mysql_query("update users set lactive = '$tid' where username = '$username'");
		$logedin=true;
	}
	else {
		$logedin=false;
	}

	while($user = mysql_fetch_array(mysql_query("select * from users where status = 'online'))) {
		$online=$user[lactive]+$sek;
		if ($tid>$online)
			mysql_query("update users set status='offline' where username = '$user[username]'");
	}

?>
```

Permalänk: https://www.webforum.nu/p/319673

---

Tråden på webben: https://www.webforum.nu/amne/php/15853-utloggning  
Nästa sida: https://www.webforum.nu/amne/php/15853-utloggning/page2.md
