Avatar billede BTEngineer Novice
17. april 2005 - 13:47 Der er 8 kommentarer og
1 løsning

Hent hvert eneste 1 minut!

Hej eksperter.

Jeg har et community med onlinetid og mønter.
Jeg ville gerne have lavet sådan at man ikke blive smidt ud af community'et hvis man er inaktiv. Det gør session åbenbart helt automatisk.

Jeg ville gerne have at ens onlinetid / mønter bliver opdateret hvert eneste minut. Jeg har prøvet med:

<META HTTP-EQUIV="Refresh" CONTENT="60; URL=opdater.php">
og
<iframe id="timerframe" src="" style="height:1px;width:1px;visibility:hidden"></iframe>

<script language="JavaScript">
var timetick = 15000;
function countminiute() {
    var i = document.getElementById('timerframe');
    i.src = 'opdater.php';
    setTimeout( 'countminiute()', timetick )
}

setTimeout( 'countminiute()', timetick )
</script>

Og filen opdater.php ser således ud:

<?
session_start();
if (session_is_registered("brugernavn") AND ("kodeord")) {
include("mysql/mysql.php");
$hent = mysql_query("SELECT * FROM community_avis WHERE brugernavn = '$_SESSION[brugernavn]'") or die(mysql_error());
$vis = mysql_fetch_array($hent);
?>
<?
$gltid = $vis[logintid];
$tidnu = time();
$plusminus = $tidnu-$gltid;
$nytid = $plusminus;
$glmønter = $vis[logintid];
$mønternu = time();
$plusminus = $mønternu-$glmønter;
$mønternu = $plusminus;
$query = mysql_query("UPDATE community_avis SET onlinetid = onlinetid+$nytid, mønter = mønter+$mønternu WHERE brugernavn = '$_SESSION[brugernavn]'")
?>
<?
}else{
print "<link href='style.css' type='text/css' rel='stylesheet'><font color=red>Du er ikke logget ind!</font>";
}
?>

Når jeg prøver, giver den for meget tid.
Jeg håber nogen har en løsning.

Tak på forhånd. PS. Sig hvis i mangler noget så skriver jeg det :-).
Avatar billede erikjacobsen Ekspert
17. april 2005 - 13:51 #1
Jeg ved ikke hvorfor du får for meget tid.

Men overvej følgende

  1) Brug Javascript-funktionen setInterval
  2) Du kan ikke mene

  if (session_is_registered("brugernavn") AND ("kodeord")) {

    Enten skal du ikke tjekke for "kodeord" eller også skal du sætte session_is_registred foran
Avatar billede BTEngineer Novice
17. april 2005 - 13:52 #2
Jamen det er det script til at hente HVERT minut, det virker ik helt :-/... og hvis man trykker på opdaterings knappen øverst over internet adressen så for man ekstra tid :( i kan se community på http://www.dounie.dk/avis
Avatar billede cmau Nybegynder
17. april 2005 - 13:55 #3
Her er et eks. jeg skrev for langtid siden, som mange har fået hjælp udfra:

$timenow = time(); //Finder tiden nu.

$updatetime = $timenow-(60); //trækker 60 sekunder fra tiden, så vi kan finde ud af hvornår brugeren skal have et minut mere.

$deletetime = $timenow-(1200); //Vi trækker 1200 drkunder (20 minutter) fra tiden, så vi kan finde ud af hvornår brugeren skall smides af.

$res = mysql_query("select sidst_tid from brugere WHERE id=".$_SESSION[userid].""); //Her henter vi den sidste "$updatetime" brugeren har sat, for at finde ud af om han skal have 1 minut mere.

$sidst_tid = mysql_result($res,0,"sidst_tid");

if($sidst_tid < $updatetime) { //Her ser vi om "sidst_tid" (Den sidste tid som bruger satte altså $updatetime) det er tid til at give 1 minut.

//Hvis det er tid til at give et minut:

$res = mysql_query("select minutter from brugere WHERE id=".$_SESSION[userid].""); //Her henter vi "minutter" (det antal minutter brugeren har sat på i).

$minutter = mysql_result($res,0,"minutter");

$minutter++; //Her lægger vi 1 til så hvis brugeren før havde 5 minutter så har den nu 6 minutter :o)

mysql_query("UPDATE brugere SET minutter = '$minutter' WHERE id=".$_SESSION[userid].""); //Her sætter vi så det nye antal minutter tilbage i brugers info.

} //Her slutter vi minut delen.

$query = mysql_query("update brugere set sidst_tid='$timenow' WHERE id=".$_SESSION[userid].""); //Her opdatere vi brugerens sidst_tid til tiden som den er nu. Så der skal gå 1 minut før han får 1 minut. og 20 minutter for han bliver smidt af.

$deletequery = mysql_query("update brugere set online=0 WHERE sidst_tid < '$deletetime'"); //Her tjekker vi så alle oprettede bruger. Alle de brugere hvor det er over 20 min siden de har givet en "sidst_tid" bliver online sat til 0 (0 for offline) og dem hvor der ikke er gået 20 min er stadig sat til 1 (for online).
Avatar billede BTEngineer Novice
17. april 2005 - 13:56 #4
Skal det laves i den fil der hedder opdater eller?
Avatar billede cmau Nybegynder
17. april 2005 - 13:57 #5
Prøv at læs og kig det i gennem, så finder du måske hvad du selv har gjort fejl.
Avatar billede BTEngineer Novice
17. april 2005 - 14:04 #6
Hvis man skal bruge dit, hvordan skal man så lave tabellerne ;S?
Avatar billede cmau Nybegynder
17. april 2005 - 16:48 #7
Du skal adde:

`sidst_tid` int(255) NOT NULL default '0',
`minutter` int(255) NOT NULL default '0',
`online` int(255) NOT NULL default '0',
Avatar billede BTEngineer Novice
17. april 2005 - 18:11 #8
Jeg kan ikke få det til at virke

www.dounie.dk/opret.php
www.dounie.dk/login.php

Den gør intet :S
Avatar billede BTEngineer Novice
17. april 2005 - 18:19 #9
Har fået det til at virke, men for at lave så det er i timer og minutter så har jeg prøvet sådan:

<?
session_start();
if (session_is_registered("brugernavn") AND ("kodeord")) {
include("mysql/mysql.php");
$hent = mysql_query("SELECT * FROM community WHERE brugernavn = '$_SESSION[brugernavn]'") or die(mysql_error());
$vis = mysql_fetch_array($hent);
?>
<html>

<head>

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

</head>
<hr>

<body oncontextmenu="return false"ondragstart="return false"onselectstart="return false">
<?
$timenow = time();
$updatetime = $timenow-(60);
$deletetime = $timenow-(1200);

$res = mysql_query("SELECT sidst_tid FROM community WHERE brugernavn = ".$_SESSION[brugernavn]."");
$sidst_tid = mysql_result($res,0,"sidst_tid");

if($sidst_tid < $updatetime) {
$res = mysql_query("SELECT minutter FROM community WHERE brugernavn = ".$_SESSION[brugernavn]."");

$minutter = mysql_result($res,0,"minutter");

$minutter++;

mysql_query("UPDATE community SET minutter = '$minutter' WHERE brugernavn = ".$_SESSION[brugernavn]."");
}

$query = mysql_query("UPDATE community SET sidst_tid='$timenow' WHERE brugernavn = ".$_SESSION[brugernavn]."");
$deletequery = mysql_query("UPDATE community SET status2 = 'offline' WHERE sidst_tid < '$deletetime'");
?>
<?
$timer2 = $vis[minutter]/3600;
$timer = floor($timer2);
$min = floor(($timer2-$timer)*60);
if($min < 10)$min = "0".$min;
?>
<? echo("$timer Timer, og $min Minutter."); ?>

</body>

</html>

<?
}else{
print "<link href='style.css' type='text/css' rel='stylesheet'><font color=red>Du er ikke logget ind!</font>";
}
?>

Men det virker ikke helt :S?
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