Yes yes... altså det jeg har gjort er at lave en administrations side som sjovt nok også adminisrerer brugerne på siden.
Jeg håber du har tid til at læse det :=D
Det dit nye login system skal kunne er jo at se om brugerne er online så her er hvad du skal gøre:
1. DU går ind i dit login script, og der skal du modificere lidt. Fordi når du gemmer dine brugere i databasen skal du også gemme den tid de loggede på. (I MySql skal du bare åbne PHPAdmin og ændre i din database struktur så der kommer et nyt felt med navnet logontid for eksempel)
2. Derefter laver du en ny php side som du plejer, og opretter forbindelse til din database.
3. Lav derefter en variabel du kalder $nutid og ilæg tiden nu og minus med det antal sekunder brugeren må være online før administrations siden automatisk logger ham/hende af. Jeg ville anbefale 10 min. (Dvs. at hvis brugeren logger på og bagefter lukker browser vinduet vil der gå ti miniutter og han/hun vil blive logget af.)
Eksempel på kode:
$nutid = time() - (60*10);
4. Nu skal du så lave en løkke som du vil, der kører alle brugerne igennem. for hver bruger skal du tjekke om tiden nu minus ti minutter er større end den tid de loggede på. Altså om den enkelte brugers logontid er større end $nutid.
Hvis den er det er de stadig logget på, hvis ikke logontid er større end $nutid så er han/hun logget af.
5. Stadig inde i din løkke hvor du kører brugerne igennem skal du nu lave en funktion der kan opdaterer din database. Her skal du lave en if sætning som tjekker om brugeren logontid er større end $nutid, og så derefter lægge det ind i databasens loggetind felt.
6. Så gemmer du den nye php side som admlogin.php, og lægger den ind i samme mappe som dit login system. Sørg for at inkluderer admlogin.php på så mange sider som muligt hvis ikke du har en cronjob mulighed. (CronJobs kan du læse om her
http://en.wikipedia.org/wiki/Cronjobs). Du kan inkluderer ved at bruge php's interne funktion include(relativ url);
Eksempel på kode:
include("admlogin.php");
7. Derefter kan du på enhver server-side baseret side tjekke om en bestemt bruger er online bare ved at kigge i din database.
// Hvis det var lidt forvirrende med al den tekst for du lige noget eksempel med kode til din admlogin.php:
<?php
$minutter = 10;
$nutid = time() - (60 * $minutter);
// Husk at oprette forbindelse til din database før dette kodestykke
$query = mysql_query("SELECT * FROM brugere");
$time = time();
$nutime = $time - (60*$minutter);
while($row = mysql_fetch_assoc($query))
{
if($row['brugernavn'] == $_SESSION['username'])
{
if($row['logontid'] > $nutid)
{
mysql_query("UPDATE brugere SET logontid='".$time."' WHERE brugernavn = '".$_SESSION['username']."'") OR DIE(mysql_error());
mysql_query("UPDATE brugere SET loggetind='1' WHERE brugernavn = '".$_SESSION['username']."'") OR DIE(mysql_error());
}else{
mysql_query("UPDATE brugere SET loggetind='0' WHERE brugernavn = '".$_SESSION['username']."'") OR DIE(mysql_error());
session_destroy();
}
}
}
?>
Husk at rette følgende i ovenstående kode:
$_SESSION['username'] til den session som du bruger
Husk også at rette al SQL forespørgsel kode, som jeg går ud fra du kan.
Hvis du ikke bruger MySql kan du bruge dette som inpirations kilde til din admlogin.php:
<?php
$time = time();
$etime = $time - (60*10);
$fil = file("brugere.inc");
for($i=0;$i<count($fil);$i++)
{
$cuttet = $fil[$i];
$side = explode("|",$cuttet);
if($side[1] > $etime)
{
// Logget ind
}else{
// Logget af
$filen = file_get_contents("brugere.inc");
$filen = str_replace($fil[$i],"",$filen);
$fope = fopen("brugere.inc","w");
fwrite($fope,$filen);
fclose($fope);
}
}
?>
Jeg håber du kunne bruge det ;)