Pagina 1 din 1

Creare script persoane online

Scris: Dum Aug 12, 2012
de steell
salut marplo.
Vreu sa fac un script care sa arate cate persoane sunt pe pagina respectiva (sau site).
Imi poti da niste indicii cum ar trebui sa fac?
Eu m-am gandit asa: cand intra pe pagina se verifica daca ip-ul exista intr-un fisier txt, daca nu, se adauga acolo pe linie noua apoi se numara cu file() cate sunt si se afiseaza nr respectiv in pagina.
Problema este ca atunci cand iese din pagina IP-ul trebuie sa se stearga din fisier, insa asta nu stiu cum sa fac.
Am testat si scriptul de pe site insa nu inteleg cum functioneaza.
Niste idei cum sa procedez ar fi bune
Multumesc

Creare script persoane online

Scris: Dum Aug 12, 2012
de MarPlo
Pe langa IP, pe aceeasi linie trebuie adaugat si timpul unix, cu time(), cand a vizitat ultima pagina, exemplu IP^12784567.
Se preia cu file() randurile, se parcurge fiecare rand si se separa cu explode IP-ul de timp. Apoi se verifica daca acel timp plus de exemplu 1 minut e mai mic decat timpul curent. Daca e mai mic se sterge cu unset() acea linie din array-ul cu randuri din fisier.
Astfel se retin doar randurile din ultimul minut, pe care le rescrii in fisier.
Mai departe, mai studiaza cu atentie script-ul care l-ai gasit pe site, poate intelegi modul cum functioneaza.

Re: Creare script persoane online

Scris: Lun Aug 13, 2012
de steell
salut marplo
am facut scriptul asta dar imi introduce prima data ip si timpul in fisier insa cand dau refresh la pagina peste un minut nu sterge linia cu timpul mai mic decat timp curent

Cod: SelectaĊ£i tot

<?php
// preia randurile din "pers-online.txt" in array
$ardata = file('pers-online.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$nrows = count($ardata);

$timp = time();

for ($n=0; $n<$nrows; $n++) {
	$exp = explode('^', $ardata[$n]);
	$timptrecut = $exp[1]+60;
	if ($timptrecut < $timp) {
	unset($ardata[$n]);
	}
}

$ardata = array_merge($ardata);      // reordoneaza cheile in array

	$d = count($ardata);
	for ($n=0; $n<$d; $n++) {
		$filen = "pers-online.txt";
		$handlen = fopen($filen, "a+");
		fwrite($handlen,$ardata[$n].'
');
		fclose($handlen);
	}



//Adauga ip si timpul vizitatorului in fisier (daca acesta nu exista)
$ip = $_SERVER['REMOTE_ADDR'];
$preia = file_get_contents('pers-online.txt');
$cauta = substr_count($preia, $ip);
if ($cauta == 0) {
	$file = "pers-online.txt";
	$handle = fopen($file, "a+");
	fwrite($handle,$ip.'^'.$timp.'
');
	fclose($handle);
}

//arata vizitatori online
$ardata = file('pers-online.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$nrows = count($ardata);
echo '<br />Online: '.$nrows;
?>

Creare script persoane online

Scris: Mar Aug 14, 2012
de MarPlo
Salut
Nu stiu care e problema, prea mult cod de urmarit si inteles. Poate cand dai refresh sterge linia si o adauga iar cu timpul de la refresh, asa cum trebuie sa lucreze.
Poti verifica cu: print_r($ardata); ce randuri contine acel array, dupa parcurgere si unset().
In loc de atata cod cu fopen() si fwrite(), poti scrie in fisier randurile din $ardata folosind simplu aceasta functie:
file_put_contents('pers-online.txt', implode("\r\n", $ardata));