Online pocitadlo se zjistovanim IP
2 příspěvky
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Cusik... Mam online pocitadlo, ktery zjistuje podle IP adres pocet lidi co sou online a pak to zapise do databaze. Potreboval bych ale jeste udelat aby se to aby se mi to nezjistovalo jenom podle ip ale i pomoci session nebo cookies... a zapsalo se to do DB, protoze kdyz tam jsou pak lidi, ktery jsou na stejnym proxy serveru tak to ukazuje jenom 1ho uzivatele. Zde je ten PHP skript: <? $spojeni = MySQL_Connect("xxx","xxx","xxx"); //pripojeni k databazi MySQL_Select_DB("xxx"); // vybrani databaze $seconds = 120; $time = Time(); $tolerance = $time-$seconds; $ipadresa = $REMOTE_ADDR; // nadeklarovani potrebnych promenych $result = MySQL_Query("SELECT * FROM Online WHERE IP='".$ipadresa."'"); if (MySQL_Num_Rows($result)==0): MySQL_Query("INSERT INTO Online VALUES('".$ipadresa."', ".$time.")"); else: MySQL_Query("UPDATE Online SET Cas=".$time." WHERE IP='".$ipadresa."'"); endif; // upraveni obsahu tabulky MySQL_Query("DELETE FROM Online WHERE Cas<".$tolerance); //smazani vsech nevyhovujicich casu $result = MySQL_Query("SELECT * FROM Online"); $online = MySQL_Num_Rows($result); // zjisteni poctu vyhovujicich casu echo $online; // vypsani poctu ctenaru MySQL_Close($spojeni); //uzavreni spojeni s databazi ?> poradte co a kam mam napsat. thx.
-
<? // toto by mohlo fungovat. // musis pridat novy stlpec do db na session_id // /* a este .. mal by si si zaca zvykat, ze npr MySQL_Query("INSERT INTO Online VALUES('".$ipadresa."', ".$time.")"); je security hazard, lebo keby si mal predtym napisane if(!$time){$time = time();} tak by tvoja databaza bola lahko napadnutelna. hadam ti to bude fungovat, ja som to neskusal(mozno su tam este dake bugy alebo pod.) /**/ if(!($ses_id = session_id())){ session_start(); $ses_id = session_id(); } $spojeni = MySQL_Connect("xxx","xxx","xxx"); //pripojeni k databazi MySQL_Select_DB("xxx"); // vybrani databaze $seconds = 120; $time = Time(); $tolerance = $time-$seconds; $ipadresa = $_SERVER["REMOTE_ADDR"]; // nadeklarovani potrebnych promenych $res = mysql_query("select * from Online where(IP = '$ipadresa' and ses = '$ses_id'); if($row=mysql_fetch_array($res)){ // updatni stary mysql_query("UPDATE Online SET Cas= '$time' WHERE(IP='$ipadresa' and ses = '$ses_id')")or die(mysql_error()); }else{ // vloz novy zaznam mysql_query("INSERT INTO Online (`IP`, `Cas`, `ses`) VALUES('$ipadresa', '$time','$ses_id')") or die(mysql_error()); }mysql_free_result($res); MySQL_Query("DELETE FROM Online WHERE( Cas< '$tolerance')"); //smazani vsech nevyhovujicich casu $result = MySQL_Query("SELECT * FROM Online"); $online = MySQL_Num_Rows($result); // zjisteni poctu vyhovujicich casu echo $online; // vypsani poctu ctenaru MySQL_Close($spojeni); //uzavreni spojeni s databazi ?>