ik heb nu het script van geloof ik aar...

en daar stel je als je inlogt bijvoorbeeld 5 minuten in...
dan log je in...
maar na daadwerkelijk 5 minuten logt hij uit...
is eigelijk goed...
maar eigelijk wil ik het hebben na 5 minuten inactiviteit...
dus iedere keer als er geklikt wordt dat het dan geupdate wordt...

hoe kan ik dit gemakelijk veranderen?

hier een stukje code:


// Start here the login action, and make the random hash
if(($_SERVER['REQUEST_METHOD'] == "POST") && ($_POST['login'])) {
     $selectleden = mysql_query("SELECT * FROM $ledentabel WHERE username = '".sqlsafe($_POST['username'])."' AND password = '".sqlsafe(md5($_POST['password']))."'");
     if(mysql_num_rows($selectleden)) {
                                      // Ingelogd
									  $ip=$_SERVER['REMOTE_ADDR'];
                                      $hash = md5(uniqid(rand(), true));
                                      $get_id = mysql_query("SELECT id FROM ".$ledentabel." WHERE username = '".sqlsafe($_POST['username'])."' AND password = '".sqlsafe(md5($_POST['password']))."'");
                                      mysql_query("UPDATE leden SET active=1 WHERE username='".sqlsafe($_POST['username'])."'"); 
									  $fetch_id = mysql_fetch_assoc($get_id);
                                      $insert_session = mysql_query("INSERT INTO sessions (id, userid, hash, logintime, ip) VALUES ('','".$fetch_id['id']."','".$hash."',NOW(), '".$ip."')");

                                      // for debugging:
                                      #$bericht = "Ingelogd met hash: ".$hash." En je hebt id-nummer:".$fetch_id['id'];


                                      if ($insert_session) {
                                         setcookie ("id", $fetch_id['id'],time()+$_POST['sessiontime']);
                                         setcookie ("hash", $hash,time()+$_POST['sessiontime']);
                                         header('location:menu.php');
                                                           } else {
                                                           echo "Fout in de query: ".mysql_error();
                                                           exit();
                                                           }
                                      }  else {
                                      // Foute pass
                                      $bericht = "<b>Je inloggegevens komen niet overeen met wat in de database staan.</b>";
                                      }

Als je bij iedere klik je MySQL database gaat updaten en je hebt op een bepaald moment bijvoorbeeld 250 users actief dan daalt je performance enorm. actief/inactief in de gaten houden kan je beter met session doen.
dit is een site voor een bedrijfje hier...
er werkt op het moment maar 4 man personeel + ik de stagaire...

dit bedrijf wordt niet zo gigantisch dat het 250 leden gaat beschikken...
enigste die website gaan gebruiken voorlopig die 4 man...

dus denk niet dat die update zon probleem mag maken?
updaten enzo lukt wel gewoon...

maar nu kom ik erachter dat ze het over logboeken bedoelen...

er worden dus ooit logboeken getypt wat wel is langer duurt dan 5 minuten...
nu wil ik dus eigelijk dat er na het hele verhaal typen niet komt te staan je bent niet ingelogt en je zo alles kwijt bent...

ik wil dus eigelijk dat zodra er een toets aangeslagen wordt,
de tijd geupdate wordt....

hier vertellen ze mij dat ik dit moet gaan doen met javascript...
maar waar moeti k zoeken?
namelijk totaal geen ervaring met javascript...
ajax, daar zal je op moeten zoeken,

met javascript vang je de toetsen dan op en die stuur je naar een php script dat vervolgens de database gaat updaten,

maar ik hoop wel dat jullie daar niet kunnen blindtypen want 2 mensen die stevig doortypen en bij iedere toets de database updaten....

miss valt het mee maar dat kan best zweten worden voor die server

controle met de sessie van php zal dan zeker beter gaan werken
hmm,
ik heb wat gezocht maar kon er zo niet uitkomen...

weet iemand wat precieser uit te leggen hoe ik dit het beste kan aanpakken?

en mij er mischien mee op weg helpen?

Gezien ik op het werk ben heb k niet de tijd om je een heel uitgebreid voorbeeld te geven, maar wel snelle tip,


function update_tijd(){
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.open("GET", "het_bestand_dat_gaat_updaten.php", false);
  xmlhttp.send(null);
}


hiermee stuur je de gebruiker door naar een ander bestand zonder dat een pagina refreshed word, je zou dit dus in een onkeydown() javascript functie moeten gooien om de tijd te updaten elke keer wann er een toets ingedrukt word, hoe je die onkeydown nu precies gebruikt ben ik ff kwijt maar dat is vast wel te googlen.
oke alvast bedankt voor de tip...

ik ga even proberen zo... :)
ik heb nu dit:

bovenaan de add_log.php wordt functions.php geinclude:
bijna op einde staat het tekstveld waar het allemaal om draait,
deze moet geupdate worden zodra er in gewerkt wordt...

(heb de niet nodige code er tusseuit gehaald.


<?php
include "functions.php";

Omschrijving:<br>
		<TEXTAREA NAME="Omschrijving" COLS=40 ROWS=6 onkeypress="onkeypress()"></TEXTAREA><br>
		<input type="hidden" name="naam" value="<?=$zoeknaam?>">
		<input type="submit" name="verzenden" value="Verzenden!">
?>


en hier het stukje uit mijn functions.php


<?php
function onkeypress(){

$id	  = $get_userdata['id'];
mysql_query("UPDATE sessions SET logintime = NOW() WHERE id=$id");

} 
?>



als ik deze nu ga testen,
zegt hij bij iedere toetsaanslag...

stack overflow at line: 62

maar weet niet over welk document dit gaat?

regel 62 van add_log.php:

<?php


regel 62 van functions.php:

// Data uit leden-tabel oproepen ($get_userdata['username'], $get_userdata['warnings']
de functie onkeypress die je in de textarea gebruikt verwijst naar een javascript functie,

in die javascript functie zou je de javascript die ik eerder gaf moeten gebruiken om naar een php script te gaan die vervolgens de mysql_query uitvoert,

wat de stack overflow betekend zou ik zo 1 2 3 niet weten, als je bovenstaande toegevoegd hebt en de fout er nog steeds is kan je miss de omringende regels code posten?
nosferatu schreef op 28.01.2010 11:17

...
wat de stack overflow betekend zou ik zo 1 2 3 niet weten, als je bovenstaande toegevoegd hebt en de fout er nog steeds is kan je miss de omringende regels code posten?


Stackoverflow is kortgezegd dat je over de gereserveerde ruimte van je stack gaat.

Verwijst vaak naar een infinite (soms recursive (zichzelf-aansprekende)) loop.
Waarschijnlijk laat je 1 of meerdere functies elkaar aanspreken.

Reageren