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
?>