Avatar billede BTEngineer Novice
19. april 2005 - 08:23 Der er 15 kommentarer og
2 løsninger

En uendelig session?

Hej eksperter.

Jeg har lavet et community hvor man kan oprette en bruger og logge ind. Når man har logget ind i communityet så begynder man at få onlinetid / mønter.

Men hvis nu man lader sin computer stå i 1 time og er i mit community, så efter der er gået den time og man ville trykke opdatere så ville den sige "Du er ikke logget ind!" selvfølgelig pga. session har smidt en af efter man ikke har været aktiv i communityet. Det syntes jeg er irreterende og det ville jeg gerne have lavet om på. Altså sådan man f.eks. kan lade sin computer stå hele natten og få onlinetid / mønter hvis det skulle være.

Er du muligt at lave en uendelig session? Jeg har spurgt hos min internetudbyder og fik afvide at jeg skulle kigge på linket:

http://ws1.surf-town.net/phpinfo.php

Men det forstår jeg ikke lige frem specielt meget af.

Men hvis det nu er umuligt at lave en uendelig session, er det så muligt at lave sådan at online tiden / mønterne bliver opdateret hvert eneste minut?

Det ville jo gøre sådan at man ikke bliver smidt af. For så begynder session at tælle forfra til omkring de 40 minutter mener jeg det er.

Min database til communityet ser således ud:

CREATE TABLE `community_avis` (
  `ID` int(10) unsigned NOT NULL auto_increment,
  `brugernavn` varchar(100) NOT NULL default '',
  `online` char(3) NOT NULL default 'nej',
  `logintid` varchar(100) NOT NULL default '',
  `onlinetid` varchar(100) NOT NULL default '0',
  `mønter` varchar(100) NOT NULL default '0',
  `status` varchar(100) NOT NULL default 'normal',
  `kodeord` varchar(100) NOT NULL default '',
  `email` varchar(100) NOT NULL default '',
  `navn` varchar(100) NOT NULL default '',
  `kon` varchar(100) NOT NULL default '',
  `toj` varchar(100) NOT NULL default '',
  `msn` varchar(100) NOT NULL default '',
  `icq` varchar(100) NOT NULL default '',
  `fritekst` longtext NOT NULL,
  PRIMARY KEY  (`ID`)
) TYPE=MyISAM;

Min login fil ser således ud:

<?
session_start();
?>
<html>

<head>

<link rel="stylesheet" href="style.css" type="text/css">

</head>

<body oncontextmenu="return false"ondragstart="return false"onselectstart="return false">

<?
include "mysql/mysql.php";

if($_POST[action] == "login") {

if($_POST[brugernavn] == "") {
print "Du skal skrive et brugernavn!";
print "<br><br>";
}else{

if($_POST[kodeord] == "") {
print "Du skal skrive et kodeord!";
print "<br><br>";
}else{

$tjek_bruger = mysql_query("SELECT * FROM community_avis WHERE brugernavn LIKE '$_POST[brugernavn]' AND kodeord = '$_POST[kodeord]'") or die(mysql_error());
$tjek = mysql_fetch_array($tjek_bruger);
if($tjek[brugernavn] == "") {
print "Forkert brugernavn eller kodeord!";
print "<br><br>";
}else{


$_SESSION[brugernavn] = $_POST[brugernavn];
$_SESSION[kodeord] = $_POST[kodeord];
$_SESSION[logintid] = time();

$logintid = date('h:i:s');

mysql_query("UPDATE community_avis SET logintid = '$logintid', online = 'ja' WHERE brugernavn = '$_SESSION[brugernavn]'") or die(mysql_error());
print "<meta http-equiv=\"refresh\" content=\"0;url=login_ok.php\">";

}
}
}
}else{
}
?>

<form action="login.php" method="POST">
<input type="hidden" name="action" value="login">

Brugernavn <br>
<input type="text" name="brugernavn"><br>
Kodeord <br>
<input type="password" name="kodeord"><br><br>
<input type="submit" name="submit" value="Login">

</form>

</body>

</html>

Og min login_ok.php fil ser så således ud:

<?
session_start();
if (session_is_registered("brugernavn") AND ("kodeord") AND ("logintid")) {
include "mysql/mysql.php";
?>

<html>

<head>

<link rel="stylesheet" href="style.css" type="text/css">

</head>

<body oncontextmenu="return false"ondragstart="return false"onselectstart="return false">

<?
echo("Hej <b>$brugernavn</b> og velkommen.");
?>
<hr>
<?
//tjekker brugerens onlinetid
$timer2 = $vis[onlinetid]/60;
$timer = floor($timer2);
$min = floor(($timer2-$timer)*60);
if($min < 10)$min = "0".$min;
$mønter2 = $vis[mønter]/60;
$mønter = floor($mønter2);
$min1 = floor(($mønter2-$mønter)*60);
if($min1 < 10)$min1 = "0".$min1;
?>
Din onlinetid er: <? echo $timer; ?> Timer, og <? echo $min; ?> Minutter
<br>
<b>Mønter:</b> <? echo $mønter; ?> Mønter.<br>
<br><br>
<a href="logud.php">Log af</a>
<br><br>
</body>

</html>

<?
}else{
print "Du er ikke logget ind!";
}
?>

Jeg håber nogen kan hjælpe, det er noget jeg har arbejdet meget med og bare ikke kan få til at virke. Hvis i mangler mere inspiration så tjek evt. disse sider hvor tiden opdatere sig selv hvert minut:

www.unicraft.dk, www.smaq.dk, http://ct.ting-sager.dk

I skal lige oprette en bruger i deres community og så vente et minut... Håber nogen af jer kan hjælpe mig med at lave noget lignende hvor den opdatere hvert minut.

Tak på forhånd.
Avatar billede bacce.dk Nybegynder
19. april 2005 - 08:25 #1
Hvis du vil have det sådan at brugeren skal kunne stå online så længe uden at røre på sig skal du vælge cookies i stedet for sessions.
Avatar billede bojo Nybegynder
19. april 2005 - 08:28 #2
eller måske lave en refresh meta tag
Avatar billede bacce.dk Nybegynder
19. april 2005 - 08:28 #3
Jeg har lavet et system til min side hvor jeg laver et unikt id på brugeren og smider det i en db.
Der lavet så tjek hele tiden og der bliver slettet brugere fra db der ikke har rørt på sig i mere end 25 minutter.
det kunne du så også gøre og så bare tage den sidste tid brugeren har rørt på sig og smide i din tids tabel.
Avatar billede BTEngineer Novice
19. april 2005 - 08:35 #4
bacce > forstår ikke helt hvad du mener... bojo hvordan ville du gøre det?? og hvordan skal opdaterings filen så se ud?
Avatar billede BTEngineer Novice
19. april 2005 - 08:38 #5
bacce, hvis jeg skal lave det med cookies hvordan skal jeg så. Har slet ikke forstand på cookies...
Avatar billede bacce.dk Nybegynder
19. april 2005 - 08:40 #6
du kan smide denne ind
<meta http-equiv="refresh" content="5" />
Den refresher siden hvert 5. sekund.
ret 5 tallet til det antal sekunder der skal være mellem hvert refresh
Avatar billede BTEngineer Novice
19. april 2005 - 08:43 #7
Jamen, den skal refresher onlinetiden / mønterne..
Avatar billede bacce.dk Nybegynder
19. april 2005 - 08:43 #8
personligt mener jeg at refresh er en skod løsning.
Du kan læse om cookies her. http://dk.php.net/manual/en/function.setcookie.php

Det smarteste ville jo nok være bare at betale brugeren mønter for den tid de nu også reelt er online og ikke bare for at have et browser vindue åbent mens man snorker i dynerne.
igen bare mit syns punkt.
Avatar billede bacce.dk Nybegynder
19. april 2005 - 08:45 #9
når du refresher indlæses hele siden igen og alle dine php ting vil derfor blive opdateret på samme måde som hvis brugeren rendte rundt på din side.
Avatar billede BTEngineer Novice
19. april 2005 - 08:46 #10
Kan du ikke prøve at lave mit i cookies, og bliver man smidt ud hvis man bruger cookies ?
Avatar billede bacce.dk Nybegynder
19. april 2005 - 08:49 #11
jeg vil ikke lave dit system om til cookies for dig det skal du selv have lov til.
Du kan med cookies bestemme hvor gammel din cookie må blive, og det kan være fra 5 sec til 5 måneder det er op til dig.
Avatar billede bacce.dk Nybegynder
19. april 2005 - 08:54 #12
men i princippet er sessions og cookies det samme.
Sessions gæmmes på serveren og cookies hos clienten.
Men fremgangsmåden er næsten ens og alt står skrevet på det link jeg gav dig
Avatar billede BTEngineer Novice
19. april 2005 - 08:56 #13
Har du ikke en dansk side hvor de forklare om cookies?
Avatar billede BTEngineer Novice
19. april 2005 - 08:58 #14
Hvis jeg laver sådan at min cookies må blive 5 måneder, er det så, så lang tid man kan lade browseren stå og få timer og points?
Avatar billede bacce.dk Nybegynder
19. april 2005 - 09:12 #15
du kan lukke for browseren hvis du vil...
Som sagt cookies gemmes på clientens computer, sessions gemmes på serveren.
men det smarteste ville være at benytte dine sessions og så bare registrere start tiden og slut tiden hvor brugeren ikke rører på sig længere, eller måske slet ikke er der.
Avatar billede bacce.dk Nybegynder
19. april 2005 - 09:14 #16
ellers er der kun tilbage at sige
<meta http-equiv="refresh" content="1800" />  <-- refresher hver halve time.

Smide den ind på alle dine sider, så vil brugeren blive refreshet hver halve time og så skulle du kunne opretholde dine mant givninger.
Avatar billede BTEngineer Novice
19. april 2005 - 09:26 #17
Nu kan jeg se det, jeg faldte osse over en tutorial med nogen cookies.. så har da lært noget :).
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