Zapis IP do TXT
3 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é.
-
Ahoj, potreboval bych poradit zda a jak upravit tento scriptik: http://www.pcsvet.cz/art/article.php?id=3416 ABY ZAPISOVAL IP DO SOUBORU - visitors.txt - Diky moc
-
nevím, co je na tom webu, ale seznam ip jednoduše uložíš asi takto: $nazev="ipadresy.log"; $soubor = fopen($nazev, 'a+'); fwrite($soubor,$_SERVER['REMOTE_ADDR']."\n"); fclose($soubor);
-
create table Celkem ( Pocet int null ); Tabulka o měsíční návštěvnosti: create table Mesicni ( Mesic varchar(10) not null, Pocet int null, PRIMARY KEY(Mesic) ); Tabulka pro ukládání denní návštěvnosti: create table Dnes ( Datum date not null, Pocet int null, PRIMARY KEY(Datum) ); Tabulka pro ukládání počtu návštěv na IP Adresu: create table Host ( IP varchar(20) not null, Datum date null, Pocet int null, PRIMARY KEY(IP) ); Samotný kód počítadla A teď už přistoupíme k samotnému kódu. Nejprve je nutné se připojit databázovému serveru a vybrat databázi, se kterou budeme pracovat! $spojeni = MySQL_Connect("server", "login", "password"); MySQL_Select_DB("databáze"); Poté nadeklarujeme potřebné proměnné: $ipadresa = $REMOTE_ADDR; // proměnná obsahující IP adresu návštěvníka $dnesnidatum = Date("Y-m-d"); // proměnná obsahující dnešní datum v potřebném formátu $mesic = Date("m"); SetType($mesic, "integer"); // deklarace proměnné, obsahující číslo měsíce a přetypování na integer $rok = Array(1=>"Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"); // pole obsahující názvy měsíců $result = Array(); // pole výsledků $counter = Array(); // pole obsahující zpočítaná data $month = $rok[$mesic]; // název aktuálního měsíce Pak musíme zjistit, jestli máme počítat návštěvu, respektive jestli již návštěvník s danou IP adresou ten den na stránkách nebyl, potom bychom počítali jen návštěvu IP adrese: $result[0] = MySQL_Query("SELECT * FROM Host WHERE IP='".$ipadresa."'"); $host = MySQL_Fetch_Object($result[0]); $poslednipristup = $host->Datum; // zjistíme, zda již IP adresa v tabulce je: if ($poslednipristup==""): $pocitat=true; MySQL_Query("INSERT INTO Host VALUES('".$ipadresa."', '".$dnesnidatum."',1)"); // pokud ne, vložíme ji else: // zjistíme, zdali návštěvník ten samý den nebyl na stránce if ($poslednipristup!=$dnesnidatum): $pocitat = true; MySQL_Query("UPDATE Host SET Datum = '".$dnesnidatum."', Pocet = Pocet+1 WHERE IP = '".$ipadresa."'"); // pokud ne, připočteme návštěvu IP adrese a uložíme aktuální datum else: $pocitat=false; MySQL_Query("UPDATE Host SET Pocet = Pocet+1 WHERE IP = '".$ipadresa."'"); // jinak připočteme návštěvu IP adrese a nepočítáme jiné přístupy endif; endif; Následuje část, která zajistí počítání přístupů: if ($pocitat): // zjistíme, zdali máme počítat $result[1] = MySQL_Query("SELECT * FROM Celkem"); if (MySQL_Num_Rows($result[1])!=0): $counter[0] = MySQL_Result($result[1],0)+1; MySQL_Query("UPDATE Celkem SET Pocet = Pocet+1"); else: $counter[0] = 1; MySQL_Query("INSERT INTO Celkem VALUES(1)"); endif; $result[2] = MySQL_Query("SELECT * FROM Mesicni WHERE Mesic = '$month'"); $aktmesic = MySQL_Fetch_Object($result[2]); $counter[1] = $aktmesic->Pocet+1; if ($counter[1]==1): MySQL_Query("INSERT INTO Mesicni VALUES('$month',1)"); else: MySQL_Query("UPDATE Mesicni SET Pocet = Pocet+1 WHERE Mesic = '$month'"); endif; $result[3] = MYSQL_Query("SELECT * FROM Dnes WHERE Datum='$dnesnidatum'"); $zaznam = MySQL_Fetch_Object($result[3]); $counter[2] = $zaznam->Pocet+1; if ($counter[2] == 1): MySQL_Query("INSERT INTO Dnes VALUES ('$dnesnidatum', 1)"); else: MySQL_Query("UPDATE Dnes SET Pocet = Pocet+1 WHERE Datum = '$dnesnidatum'"); endif; // pokud ano, připočteme všem hodnotám jednu a vrátíme výsledky v poli $counter else: $result[4] = MySQL_Query("SELECT * FROM Celkem"); $counter[0] = MySQL_Result($result[4],0); $result[5] = MySQL_Query("SELECT * FROM Mesicni WHERE Mesic = '$month'"); $tentom = MySQL_Fetch_Object($result[5]); $counter[1] = $tentom->Pocet; $result[6] = MYSQL_Query("SELECT * FROM Dnes WHERE Datum='$dnesnidatum'"); $dnes = MySQL_Fetch_Object($result[6]); $counter[2] = $dnes->Pocet; // jinak jen načteme všechny hodnoty do pole $counter endif; Poslední část už jen slouží ke zobrazení hodnot počítadel: $result[7] = MySQL_Query("SELECT * FROM Host WHERE IP = '".$ipadresa."'"); $counter[3] = MySQL_Result($result[7],0,2); echo "Celkem: ".$counter[0]."<br>"; echo $month.": ".$counter[1]."<br>"; echo "Dnes: ".$counter[2]."<br>"; echo "IP: ".$counter[3]." ";