Avatar billede henrik_nielsen Nybegynder
22. april 2005 - 18:35 Der er 1 kommentar og
1 løsning

"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.
Avatar billede henrik_nielsen Nybegynder
22. april 2005 - 18:57 #1
Ved spørgsmålet er lidt langt, men please hjælp mig, bare sig hvad jeg kan gøre? på f.eks http://www.smaq.dk og http://ct.ting-sager.dk der opdatere tiden sig selv... håber altså nogen kan hjælpe :-/..
Avatar billede henrik_nielsen Nybegynder
22. april 2005 - 22:15 #2
Har fået lavet selv ;)
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