Avatar billede ghostweb Nybegynder
10. oktober 2006 - 21:15 Der er 31 kommentarer og
1 løsning

Logge automatisk ud.

Har et problem med mit lille brugersystem til min chat.

Mangler noget kode til hvis man er inaktiv i mere end 10 minutter skal den logge en ud.

Login systemet laver denne session når man logger ind:

$_SESSION['loggetind'] = "yes";

Skriv hvis i ikke forstår hvad jeg mangler.
Avatar billede hmm10 Nybegynder
10. oktober 2006 - 21:28 #1
Kan du ikke lave et javascript, som tæller fra sidste aktivitet, og som sender til et php script, efter en sat tid?
Avatar billede ghostweb Nybegynder
10. oktober 2006 - 21:43 #2
Jo kunne man godt, er bare lige hvordan har aldrig arbejdet med det før
Avatar billede jakobdo Ekspert
10. oktober 2006 - 22:00 #3
Kan du ikke ændre time to live på din session til 10 minutter?
Avatar billede ghostweb Nybegynder
10. oktober 2006 - 22:30 #4
Time to live, forstår det ikk lige.

Det skal jo bare være at den tjekker hver gang man trykker på noget, men hvis der ikke sker noget inden for 10 min , skal den automatisk slå session til no
Avatar billede coderdk Praktikant
11. oktober 2006 - 14:04 #5
Efter session_start() og før du laver noget andet, så sæt:

define( "TIME_TO_LIVE", 600 );

if ( !empty( $_SESSION['loggetind'] ) && ( time() - TIME_TO_LIVE ) > $_SESSION['loggetind'] )
{
  session_destroy();
  header('location: auto_logout_besked.php');
  exit;
}
$_SESSION['loggetind'] = time();

Husk så, når brugeren logger ind, at sætte $_SESSION['loggetind'] til time();
Avatar billede jakobdo Ekspert
11. oktober 2006 - 14:30 #6
coderdk: Kunne man ikke lege med:
session.cookie_lifetime eller session.cache_expire ?
Avatar billede coderdk Praktikant
11. oktober 2006 - 14:37 #7
jakobdo, Helt sikkert! :) I mange tilfælde er det endda nok det bedste ;)
Avatar billede ghostweb Nybegynder
11. oktober 2006 - 18:02 #8
Okay får det vidst ikke helt :)

Parse error: parse error, unexpected T_STRING in /data/cluster/free1go/p/o/www.pokzi.1go.dk/inde.php on line 14


min kode:


<?php
include("check.php");

define( "TIME_TO_LIVE", 600 );

if ( !empty( $_SESSION['loggetind'] ) && ( time() - TIME_TO_LIVE ) > $_SESSION['loggetind'] )
{
  session_destroy();
  header('location: auto_logout_besked.php');
  exit;
}
$_SESSION['loggetind'] = time();

Husk så, når brugeren logger ind, at sætte $_SESSION['loggetind'] til time();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>


Husk så, når brugeren logger ind, at sætte $_SESSION['loggetind'] til time();
<body>
Hej <?php print $_SESSION['Brugernavn'] ?><br>

Her er følgene ting du kan gøre indtilvidere:<br>

<a href="indexxx.php">Chat</a><br>

<a href="profil.php?b=<?php print $_SESSION['Brugernavn'] ?>">Din profil</a><br>
<a href="medlemmer.php">Brugere</<a><br>
<a href="retprofil.php?id=<?php print $profil['brugernavn'] ?>">indsæt billed til din profil</a><br>
<a href="sog.php">Søg på alle brugerne</a><br>
<a href="logud.php">Logud</a><br>



<?php    if($_SESSION['Rang'] == "Admin"){    ?>
    Du er admin og har rettigheder til alt. Selvom der ingen admin funktioner endnu <? } ?>
</body>
</html>
Avatar billede ghostweb Nybegynder
11. oktober 2006 - 18:05 #9
Sådan ups :P glemte at slette den tekst du havde skrevet.

Er kun et problem nu, at den logger mig ud lige så snart jeg kommer ind på inde.php
Avatar billede ghostweb Nybegynder
11. oktober 2006 - 18:11 #10
Tror det er min index.php (login med sessions der er problemet)



<?php
session_start();
if($_POST['submit']){
include("connect.php");
$db_hent = mysql_query("select * from brugere where brugernavn = '$_POST[brugernavn]'");
$hent = mysql_fetch_array($db_hent);
if($_POST['brugernavn'] == $hent['brugernavn'] && md5($_POST['adgangskode']) == $hent['adgangskode']){
$_SESSION['loggetind'] = "yes";
$_SESSION['Brugernavn'] = $hent['brugernavn'];
$_SESSION['Rang'] = $hent['Rang'];
$tid = time();
mysql_query("UPDATE brugere SET logintid = '$tid' WHERE brugernavn = '$_SESSION[Brugernavn]'");
header("Location: inde.php");
}else{
print "Forkert brugernavn/adgangskode!";
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form name="form1" method="post" action="index.php">
<table width="50">
  <tr>
    <td>Brugernavn:</td>
    <td><input type="text" name="brugernavn"></td>
  </tr>
  <tr>
    <td>Adgangskode:</td>
    <td><input type="password" name="adgangskode"></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><input type="submit" name="submit" value="Login"></td>
  </tr>
</table>
</form>
<p><a href="opret.php">Opret bruger</a></p>
</body>
</html>
Avatar billede coderdk Praktikant
11. oktober 2006 - 18:52 #11
$_SESSION['loggetind'] = "yes";

skal være:

$_SESSION['loggetind'] = time();

som jeg skrev før ;)
Avatar billede coderdk Praktikant
11. oktober 2006 - 18:53 #12
Man kan sige at $_SESSION['loggetind'] i din version slet ikke tjener noget formål, da du jo bare kunne checke om $_SESSION['Brugernavn'] er tom eller ej ;)
Avatar billede ghostweb Nybegynder
11. oktober 2006 - 21:54 #13
Nu kommer problemet bare at jeg ryger ud med det samme igen, den siger at jeg ikke er logget på.

Tror det er chech.php der går ind og laver problemer nu.

Check.php:
<?php
session_start();
if($_SESSION['loggetind'] !== "yes"){
print "Du er ikke logget ind!";
print "<br><a href=index.php>Klik her for at gå til login-siden</a>.";
exit;
}
?>
Avatar billede coderdk Praktikant
11. oktober 2006 - 21:59 #14
check.php er den fil du include'r for at være sikker på at folk er logget ind, ikke? Hvis det er tilfældet skal den nu indeholde:

<?php

session_start();

define( "TIME_TO_LIVE", 600 );

if ( !empty( $_SESSION['loggetind'] ) && ( time() - TIME_TO_LIVE ) > $_SESSION['loggetind'] )
{
  session_destroy();
  header('location: auto_logout_besked.php');
  exit;
}
elseif ( empty( $_SESSION['loggetind'] ) )
{
  print "Du er ikke logget ind!";
  print "<br><a href=\"index.php\">Klik her for at gå til login-siden</a>.";
  exit;
}
$_SESSION['loggetind'] = time();

?>
Avatar billede ghostweb Nybegynder
11. oktober 2006 - 23:09 #15
Ser meget godt ud, men 600 = hvor lang tid? og hopper den automatisk ud til logud.php ?
Avatar billede coderdk Praktikant
11. oktober 2006 - 23:20 #16
Det er antal sekunder, altså 10 minutter, som du skrev ;) Den hopper ikke til logud, den logger selv ud, og redirecter til en side der hedder auto_logout_besked.php hvor du kan fortælle brugeren at han er blevet logget ud :)
Avatar billede ghostweb Nybegynder
11. oktober 2006 - 23:25 #17
Hmm syntes ikke rigtigt at jeg bliver smidt ud, kig evt. på

http://pokzi.1go.dk/test/
Avatar billede coderdk Praktikant
11. oktober 2006 - 23:39 #18
Evt lige ændr TIME_TO_LIVE til 10 så vi ikke skal vente 10 minutter på at teste ;P
Avatar billede ghostweb Nybegynder
11. oktober 2006 - 23:41 #19
så er den opdatert
Avatar billede coderdk Praktikant
11. oktober 2006 - 23:51 #20
Det virkede fint, ved reload efter over 10 min, fik jeg en 404: http://pokzi.1go.dk/test/auto_logout_besked.php
Avatar billede coderdk Praktikant
11. oktober 2006 - 23:51 #21
hehe så ikke du havde opdateret - men det virker i hvert tilfælde
Avatar billede ghostweb Nybegynder
11. oktober 2006 - 23:57 #22
Ved ikke hva der sker for min ftp :)

Læg et svar så giver jeg dig os lige en kommentar i din karma :)
Avatar billede coderdk Praktikant
11. oktober 2006 - 23:59 #23
heheh takker :)
Avatar billede ghostweb Nybegynder
12. oktober 2006 - 00:02 #24
Fandt lige et mindrer problem, den laver rod i mit point system når den automatisk logger en ud
Avatar billede ghostweb Nybegynder
12. oktober 2006 - 00:18 #25
Smutter iseng , håber at hører fra dig imorgen
Avatar billede coderdk Praktikant
12. oktober 2006 - 00:23 #26
Øøh ok? :)
Avatar billede ghostweb Nybegynder
12. oktober 2006 - 13:22 #27
ved ikke om det har med dette spørgsmål og gøre mere eller om jeg skal oprette et nyt.


Når den logger automatisk ud, får ingen points og der står man har været på i over 1000 minutter,

logud.php :

<?php
session_start();
include_once("connect.php");
$q1 = mysql_query("select * from brugere where brugernavn = '$_SESSION[Brugernavn]'");
$hent1 = mysql_fetch_array($q1);
$tid = $hent1['logintid'];
$samlign = time() - $tid;

$minutter = $samlign / 60;

if($minutter > 60){
$regn = $minutter - 60;
$min = round($regn);
}else{
$min = round($minutter);
}

$timer = round($min / 60);
$tiden = $timer+$min;

$now = date("d/m-Y H:i");

mysql_query("update brugere set
            Point = Point+'$min',
            sidstset = '$now'
            where brugernavn = '$_SESSION[Brugernavn]'");
mysql_error();
$_SESSION['loggetind'] = "no";
$_SESSION['Brugernavn'] = "0";
print "Du er nu logget ud! - Du har været på i $min minutter";
?>
<br><a href="index.php">Login igen</a>
Avatar billede coderdk Praktikant
12. oktober 2006 - 13:59 #28
Prøv i mit script at ændre:

header('location: auto_logout_besked.php');

til

require('logud.php');

Og i logud.php prøv at erstatte session_start(); med:

if ( strpos( $_SERVER['SCRIPT_NAME'], "/logud.php" ) > 0 )
{
  session_start();
}
Avatar billede ghostweb Nybegynder
12. oktober 2006 - 15:07 #29
Nu er der kun et lille problem , hvis jeg trykker logud manuelt siger den et enormt tal..
Avatar billede coderdk Praktikant
12. oktober 2006 - 15:10 #30
Det lyder ikke som om at logintid bliver opdateret når der logges ind?
Avatar billede ghostweb Nybegynder
12. oktober 2006 - 20:33 #31
login :

<?php
session_start();
if($_POST['submit']){
include("connect.php");
$db_hent = mysql_query("select * from brugere where brugernavn = '$_POST[brugernavn]'");
$hent = mysql_fetch_array($db_hent);
if($_POST['brugernavn'] == $hent['brugernavn'] && md5($_POST['adgangskode']) == $hent['adgangskode']){
$_SESSION['loggetind'] = time();
$_SESSION['Brugernavn'] = $hent['brugernavn'];
$_SESSION['Rang'] = $hent['Rang'];
$tid = time();
mysql_query("UPDATE brugere SET logintid = '$tid' WHERE brugernavn = '$_SESSION[Brugernavn]'");
header("Location: inde.php");
}else{
print "Forkert brugernavn/adgangskode!";
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form name="form1" method="post" action="index.php">
<table width="50">
  <tr>
    <td>Brugernavn:</td>
    <td><input type="text" name="brugernavn"></td>
  </tr>
  <tr>
    <td>Adgangskode:</td>
    <td><input type="password" name="adgangskode"></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><input type="submit" name="submit" value="Login"></td>
  </tr>
</table>
</form>
<p><a href="opret.php">Opret bruger</a></p>
</body>
</html>
Avatar billede rotco Juniormester
21. juli 2008 - 16:52 #32
Jeg har selv samme script liggende, men mit script logger ikke selv ud? jo hvis jeg trykker på noget selv så skriver den jeg ikke er logget på, altså efter de 600 sekunder.. men den logger ikke selv ud til auto_logout_besked.php


Jeg bruger $_SESSION['loggetind'] = "yes"; til MANGE ting så den kan jeg ikke ændre,

så jeg har gjort det således: $_SESSION['loggetind1'] = time();

så der er et 1'tal foran og det har jeg selvfølgelig også fikset i check.php

nogle idéer?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester