Problema Stergere Utilizatori Online

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
cadou
Mesaje:328

Problema Stergere Utilizatori Online

Am si eu o problema cu script de " Utilizatori online ".
Am pus in logare si introducere in tabelul online , de introdus introduce , problema e alta, la stergere.
Adica daca e accesat fisierul "online.php" la terminarea timpului, se sterge si se adauga din nou, dar daca nu e accesat ramane asa.
Am selectat cam ce cred ca avem nevoie :

Cod: Selectaţi tot

$data = timeBetween($date[$i],time());
$unnume = $nume[$i];
if($data == '1 minute') { mysql_query("DELETE FROM `online` WHERE `nume` = '$nume[$i]'"); }

setlocale(LC_TIME, array('ro.utf-8', 'ro_RO.UTF-8', 'ro_RO.utf-8', 'ro', 'ro_RO', 'ro_RO.ISO8859-2'));
date_default_timezone_set('Europe/Bucharest');
$timey = time();
function timeBetween($start,$end){
    $time = $end - $start;
    if($time <= 60){
      return round($time).' secunde';
    }
    if(60 < $time && $time <= 3600){
        return round($time/60,0).' minute';
    }
}
$date[$i] = e o data in format - 1364129602
$unnume = 'valoarea atribuita inregistrari din tabel'
 

MarPlo Mesaje:4343
Salut
Adauga in tabelul cu utilizatori online o coloana "expira" de tip INT. In acea coloana se adauga timpul Timestamp la care expira.
Apoi, pentru stergere apelezi comanda:

Cod: Selectaţi tot

"DELETE FROM `online` WHERE `expira`<". time()

cadou Mesaje:328
Pai nu prea stiu cum e timpul ala cu formatele.
Eu am incercat ceva de genu :

Cod: Selectaţi tot

//am creat o coloana varchar cu valoarea 1 minute

apoi if($data == $expira) {cerere de stergere}

$expira = '1 minute';
$data = 'e aia ce am zis mai sus formatu ala';
Dar tot nu merge.

steell Mesaje:190
time() returneaza numarul de secunde de la 01.01.1970 si pana prezent (momentul in care se apeleaza functia).
Acest timp + inca 60 de secunde il adaugi in coloana "expira" (de tip INT) pe care ti-a zis-o marplo. Apoi cand e accesat iar scriptul mai intai aplici acea instructiune DELETE, care sterge randurile cu timpul inregistrat mai mic decat timpul curent time().
Apoi adaugi /INSERT un alt time()+60 asociat cu acel utilizator.

cadou Mesaje:328
Deci din cate inteleg eu doar la accesarea fisierului se sterge, dar daca nu se acceseaza fisierul nu se poate face sa se stearga ?
Adica ok, sa logat pe site sa inserat in online datele, dupa 10 minute iese si nu se mai acceseaza fisierul respectiv nu merge sa se stearga ?

MarPlo Mesaje:4343
O varianta buna e sa incluzi acel fisier in toate paginile site-ului, cu include() in "index.php" sau alt fisier general inclus. Astfel, de fiecare data cand se acceseaza o pagina se reactualizeaza si datele din tabelul cu utilizatori online.
Sau, o alta modalitate e sa setezi in Cron Job (in CPanel-ul site-ului) sa acceseze frecvent, de exemplu la fiecare 5 minute acel fisier.
- Poti gasi pe internet despre Cron Job.

cadou Mesaje:328
Deci ce inteleg e urmatorul lucru:
Nu se sterge daca nu e accesat fisierul.
Si daca e accesat, sterge chiar daca de exemplu e al altui utilizator si nu sunt eu.
Corect.

- Am inteles, ma gandeam ca e vreo alta metoda pentru asa ceva.
Mersi de ajutor si de sfaturi.

Subiecte similare