"Refresh" time!
Hej Eksperter.Jeg er igang med et community, hvor man skal kunne få onlinetid.
Jeg ville gerne have det sådan at hvis man har været online i community'et i 1 minut så opdatere den ens tid. Altså hvis jeg har oprettet en bruger og er logget ind, og venter 1 minut. Så ligger den minuttet til onlinetiden og så kan man se at man har fået opdateret sin tid hvis man trykker opdater oppe ved internetadressen, eller et andet sted.
Det skal være sådan at der kommer til at stå 1 i databasen under onlinetid hvis man har været onlinet i 1 minut. Og hvis man har været online i 2 minutter står der 2 i databasen under onlinetid.
Her er mine filer:
Login.php:
-----------------------------------------------------------------
<?
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 mangler at indtaste dit brugernavn!";
print "<br><br>";
} else {
if($_POST[kodeord] == "") {
print "Du mangler at indtaste dit 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=loginok.php\">";
}
}
}
} else {
}
?>
<form action="login.php" method="POST">
<input type="hidden" name="action" value="login">
<b>Brugernavn:</b><br>
<input type="text" name="brugernavn"><br>
<b>Kodeord:</b><br>
<input type="password" name="kodeord"><br><br>
<input type="submit" name="submit" value="Login">
</form>
</body>
</html>
-----------------------------------------------------------------
Så er det login_ok.php den fil man kommer til efter man har logget ind:
-----------------------------------------------------------------
<?
session_start();
if(session_is_registered("brugernavn") AND ("kodeord") AND ("logintid")) {
include("mysql/mysql.php");
$tjek_nye_breve = mysql_query("SELECT * FROM post_avis WHERE modtager = '$_SESSION[brugernavn]' AND laest = 'nej'") or die(mysql_error());
if(mysql_num_rows($tjek_nye_breve) != "0") {
$tjek = mysql_num_rows($tjek_nye_breve);
$indbakke = "(<b>$tjek</b>)";
} else {
$indbakke = "(<b>0</b>)";
}
?>
<html>
<head>
<link href="style.css" type="text/css" rel="stylesheet">
</head>
<body oncontextmenu="return false" ondragstart="return false" onselectstart="return false">
<?
$tid_nu = time();
$opdater_tid = $tid_nu-(60);
$slet_tid = $tid_nu-(1200);
$logintid = $vis['logintid'];
if($logintid < $opdater_tid) {
$onlinetid = $vis['onlinetid'];
$onlinetid++;
mysql_query("UPDATE community_avis SET onlinetid = '$onlinetid' WHERE brugernavn = '$_SESSION[brugernavn]'");
}
$hent_c = mysql_query("UPDATE community_avis SET onlinetid = '$onlinetid+$tid_nu' WHERE brugernavn = '$_SESSION[brugernavn]'");
$slet_hent = mysql_query("UPDATE community_avis SET status = 'offline' WHERE onlinetid < '$slet_tid'");
echo("Du har $indbakke nye meddelelser i din indbakke.");
$timer2 = $vis['onlinetid']/3600;
$timer = floor($timer2);
$min = floor(($timer2-$timer)*60);
if($min < 10)$min = "0".$min;
?>
Din onlinetid:<br>
<? echo $timer; ?> Timer, og <? echo $min; ?> Minutter.
<br><br>
<a href="log_ud.php">Log ud</a>
</body>
</html>
<?
}else{
print "Du er ikke logget ind!";
}
?>
-----------------------------------------------------------------
Jeg kan forstille mig at i osse har brug for databasen:
-----------------------------------------------------------------
CREATE TABLE `community_avis` (
`id` int(10) unsigned NOT NULL auto_increment,
`brugernavn` varchar(25) NOT NULL default '',
`kodeord` varchar(25) NOT NULL default '',
`online` char(3) NOT NULL default 'nej',
`logintid` varchar(100) NOT NULL default '',
`sidst_tid` 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',
`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;
-----------------------------------------------------------------
Jeg håber i kan hjælpe, den melder ingen fejl overhovedet. Men den gider ikke opdatere tiden. Først når man logger ud. Og det skal ikke være sådan at man skal til at logge ud for at opdater sin tid.
Måske kan det osse være nødvendigt at vise jer log_ud.php:
-----------------------------------------------------------------
<?
session_start();
if (session_is_registered("brugernavn") AND ("kodeord")) {
include("mysql/mysql.php");
$query = mysql_query("SELECT * FROM community_avis WHERE brugernavn = '$_SESSION[brugernavn]'") or die(mysql_error());
$vis = mysql_fetch_array($query);
?>
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body oncontextmenu="return false"ondragstart="return false"onselectstart="return false">
<?
$gammel_tid = $vis['logintid'];
$tid_nu = time();
$plus_minus = $tid_nu-$gammel_tid;
$ny_tid = $plus_minus;
$query = mysql_query("UPDATE community_avis SET status = 'offline', onlinetid = onlinetid+$ny_tid WHERE brugernavn = '$_SESSION[brugernavn]'")
?>
<?
session_destroy();
echo("Du er nu logget ud!");
?>
</body>
</html>
<?
} else {
echo("Du er ikke logget ind!");
}
?>
-----------------------------------------------------------------
Ja, det var det.
Dette problem har jeg knoklet med i meget lang tid. Og når jeg siger meget lang tid er det omkring 3 måneder.
hele community'et kan ses på:
www.specks.dk/community/opret.php // opret bruger.
www.specks.dk/community/login.php // login med din bruger.
Tak for hjælpen på forhånd.
