kake_fisk Skrevet 7. januar 2009 Del Skrevet 7. januar 2009 Hvordan kan jeg finne ut hvor mange brukere som er på siden min uten mysql database? Lenke til kommentar
AlecTBM Skrevet 8. januar 2009 Del Skrevet 8. januar 2009 JS er vell det som har blitt brukt en del. Ellers så kan du bruke en flat fil og gi hver besøkende en id (som lagres i session og i flat film med tid) også telle alle id'ne som har vært aktive de siste x minuttene. Dette er tatt direkte uparsa og tenkt over fra min lille hjerne Lenke til kommentar
Yankes Skrevet 11. januar 2009 Del Skrevet 11. januar 2009 Her er måten du kan gjøre det på med flatfil (online.txt) <?php $log_file="online.txt"; $min_online="1"; if ($HTTP_X_FORWARDED_FOR == "") { $ip = getenv(REMOTE_ADDR); } else { $ip = getenv(HTTP_X_FORWARDED_FOR); } $day =date("d"); $month =date("m"); $year =date("Y"); $date="$day-$month-$year"; $ora = date("H"); $minuti = date("i"); $secondi = date("s"); $time="$ora:$minuti:$secondi"; $users_read = fopen("$log_file", "r"); $users = fread($users_read, filesize("$log_file")); fclose($users_read); $to_write="$ip|$time|$date"; if($users==0){ $user_write = fopen("$log_file", "w"); fputs($user_write , $to_write ); fclose($user_write ); } else{ $users=explode("\n",$users); $user_da_tenere=array(); while (list ($key, $val) = each ($users)) { $user_sing=explode("|",$val); if($date==$user_sing[2]){ $h=explode(":",$user_sing[1]); if($ip!=$user_sing[0]){ if(($h[0]==$ora)and(($minuti-$h[1])<=$min_online)){ $user_da_tenere[]=$val;} if(($h[0]==($ora-1))and((($minuti+2)-$h[1])<=$min_online)){ $user_da_tenere[]=$val; } } } } $user_da_tenere[]=$to_write; $user_write = fopen("$log_file", "w"); fputs($user_write , "" ); fclose($user_write ); while (list ($k, $v) = each ($user_da_tenere)) { $new_file_log = fopen ("$log_file", "a"); fwrite($new_file_log,"$v\n"); fclose($new_file_log); } } $users_online_read = fopen("$log_file", "r"); $users_online = fread($users_online_read, filesize("$log_file")); fclose($users_online_read); $users_online=explode("\n",$users_online); $n_u_online=count($users_online)-1; ?> Beklager uryddig kode, men dette skal funke Lenke til kommentar
Wackamole Skrevet 12. januar 2009 Del Skrevet 12. januar 2009 (endret) Jeg har en wtf til koden din $day =date("d"); $month =date("m"); $year =date("Y"); $date="$day-$month-$year"; $ora = date("H"); $minuti = date("i"); $secondi = date("s"); $time="$ora:$minuti:$secondi"; ehm, blir det ikke enklere og MYE mer ryddigere og gjøre det slik? $date = date("d-m-Y"); $time = date("H:i:s"); Btw skal finne en bedre, hvis ikke jeg koder en som er litt enklere enn Yankes sin EDIT: <?php session_start(); function getUsersOnline() { $count = 0; $handle = opendir(session_save_path()); if ($handle == false) return -1; while (($file = readdir($handle)) != false) { if (ereg("^sess", $file)) $count++; } closedir($handle); return $count; } echo getUsersOnline(); ?> Fant en, men funker tho bare på Linux / Apache Endret 12. januar 2009 av Famen Lenke til kommentar
Yankes Skrevet 12. januar 2009 Del Skrevet 12. januar 2009 Joda, sant det Famen .. Er ikke jeg som har laget det, bruker database til det jeg! Bare lasta det ned engang for leeeeenge siden og testa det jeg .. Lenke til kommentar
AlecTBM Skrevet 12. januar 2009 Del Skrevet 12. januar 2009 Siden jeg kom med en ide lenger opp så kan jeg jo utføre den også. Fikk litt tid nå før jeg skal ut, så tenkte dette kunne være til hjelp. Dette er testen med 2 brukere online, de er aktive i 5 minutter før de slettes fra flatfilen. $uniqe finnes for å hindre å ødelegge sessions i andre script på servern. Og som du ser så har ikke jeg brukt ip siden det kan være flere brukere på samme ip (fra en skole eller arbeidsplass feks) Dette scriptet skal også funke på alle plattformer <?php session_start(); $uniqe = 'count'; $aktiv = $_SESSION[$uniqe]['aktiv']; if(empty($aktiv)) { $id = rand(0, 99999999999); } else { $id = $aktiv; } $file = file('count.txt'); foreach($file as $key => $entry) { $entry = str_replace("\n",'',$entry); $explode = explode('|',$entry); if($explode[1] > (time() - 300)) { $users[$key] = $explode[0]; if($explode[0] == $id) { $is_logged = true; $acc_time[$key] = time(); } else { $acc_time[$key] = $explode[1]; } } } if(!$is_logged) { $key++; $acc_time[$key] = time(); $users[$key] = $id; } if(is_array($users)) { foreach($users as $key => $user) { if(empty($line)) { $line = $user.'|'.$acc_time[$key]; } else { $line .= "\n".$user.'|'.$acc_time[$key]; } } } $fp = fopen('count.txt','w'); fwrite($fp,$line); fclose($fp); $_SESSION[$uniqe]['aktiv'] = $id; function antall() { $file = file('count.txt'); return count($file); } echo antall(); Lenke til kommentar
kake_fisk Skrevet 12. januar 2009 Forfatter Del Skrevet 12. januar 2009 (endret) Takk allesammen. Prøvde AlecTBM's kode, og den virka fint. Edit: fikk error når jeg brukte den i include. Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/sacredwa/public_html/php/chat/index.php:38) in /home/sacredwa/public_html/php/chat/countusers.php on line 2 Endret 12. januar 2009 av kake_fisk Lenke til kommentar
AlecTBM Skrevet 12. januar 2009 Del Skrevet 12. januar 2009 Åja, den må enten includeres helt øverst (rett etter første <?php) eller så må du flytte session_start() til hovedfila. Glad for at du får bruk for den Lenke til kommentar
Wackamole Skrevet 12. januar 2009 Del Skrevet 12. januar 2009 Du må inkludere filen øvert i dokumentet, eller gjøre som AlecTBM sier og settet <?php session_start(); ?> øverst i dokuementet. Hvis du inkludere så kan du sette echo antall(); hvor enn du vil, etter inkluderingen, for og hvise bruker online.. Lenke til kommentar
kake_fisk Skrevet 12. januar 2009 Forfatter Del Skrevet 12. januar 2009 (endret) Flyttet session_start til toppen, men hvis jeg trykker refresh knappen min, teller den en ny bruker for hver gang jeg gjør det. http://sacredwater.uni.cc/php/chat Endret 12. januar 2009 av kake_fisk Lenke til kommentar
kake_fisk Skrevet 12. januar 2009 Forfatter Del Skrevet 12. januar 2009 hmm, jeg sverger på at det skjedde Jaja, problemet er løst hvertfall, takk for hjelpen alle sammen. ^^ Lenke til kommentar
AlecTBM Skrevet 12. januar 2009 Del Skrevet 12. januar 2009 Sikker på at ingen kom innom siden samtidig eller noe? Lenke til kommentar
kake_fisk Skrevet 12. januar 2009 Forfatter Del Skrevet 12. januar 2009 Hmm, hadde vært rart om en ny person kom hver gang jeg trykka refresh, men men (kom opp i 6 brukere) Lenke til kommentar
AlecTBM Skrevet 13. januar 2009 Del Skrevet 13. januar 2009 (endret) men hvis det funker nå så er jo det fint Husk knappen nå Endret 13. januar 2009 av AlecTBM Lenke til kommentar
kake_fisk Skrevet 14. januar 2009 Forfatter Del Skrevet 14. januar 2009 Uff, nå skjer det igjen :S Bare sjekk her: http://gamemaker.wikicomplete.info/. (shoutboxen er til høyre.) Lenke til kommentar
AlecTBM Skrevet 14. januar 2009 Del Skrevet 14. januar 2009 (endret) Funker fremdeles fint her Du sitter ikke bak en proxyserver eller noe? Eller har deaktivert cookies? Endret 14. januar 2009 av AlecTBM Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå