Autor Zpráva
Gerbil
Profil *
Zdravím, niečo na túto tému som už na fóre videl, ale keďže žiadne odpovede tam neboli, napíšem to pre istotu ešte raz: ako spravím skript v PHP, ktorý mi umožní v logu webserveru (gekagames.sk) pozrieť časy príchodov užívateľov a ich IP adresy?
Charlie
Profil
Gerbil, piš prosím tě titulky vlákna takové, aby měly aspoň vzdáleně něco společného s otázkou.
Wertrik
Profil *
V logu webserveru tim myslis to kde mas :

Dnes je piatok, 27. máj.
Používate Netscape 5.0 (Windows; cs-CZ)
Pre dodatočné skripty kliknite sem

tak chces mit jeste ip a casy vsech uzivate kteri byli na tvojem webu?
Nespis by tam byla posledni navsteva kdy byla a po kliknuti na nejaky odkaz by se ti potom zobrazili vsechny prichody a ip.
Slo by to udelat pres DB ale to jeste bohuzel moc neumit tak tak zvladam login, ale pres soubory to je lepsi.
Napisu ti script ktery naincludujes do toho horniho menu ten soubor ve kterem bude php se bude jmenovat treba counter.php a soubor ve kterem budou vsechny prichody a ip atd se bude jmenovat treba counter.dat - tomuto souboru nezapomeň nastavit práva na 0777.
Bude to zapisovat po hodině a bude používat cookies(docela nevýhoda, ale to je jedno).
Do té horní stránky vložíš toto :

<?
include "counter.php";
?>


ted zdroj souboru "counter.php" :


<?

// <-= ZAPIS NOVEHO PRICHODU =->

$counter_cookie = $HTTP_COOKIE_VARS['countcookie'];

if($counter_cookie != "1") { // pokud to není hodinu tak nic

setcookie("countcookie", "1",Time()+3600); // pokud je to ok, pošlem cookie že jsme tu byli

$ip = $REMOTE_ADDR;
$datum = Date("j. " . "m. " . "Y, " . "H:i:s");

$write = "Příchod \"$ip\" v $datum. \n";

$fp = FOpen ("counter.dat", "r");
$data = FRead ($fp, FileSize("counter.dat")); // načtem staré příchody aby byl nový nahoře
FClose($fp);

$fp = FOpen ("counter.dat", "w");
FWrite ($fp, $write.$data); // zapíšeme prvně nový potom staré příchody
FClose ($fp);

} ELSE {
// pokud si by si někdo prohlížel tvé stránky hodinu, tak aby se to nezapočítavalo
// prostě se to bude počítat hodinu od poslédního načtení

setcookie("countcookie", "1",Time()+3600);

}

// <-= VYPIS PRICHODU =->

// nevim jestli budeš chtít na horní stránce ten první řádek
// pokud ano tak k tomu include co má být na horní stránce napíšeš na řádek nad tím include toto : $prvni_radek = "ano";

if ($prvni_radek == "ano";) {

$radky = file("counter.dat");

echo $radky[0]; // ted nevím jestli tam má být 1 nebo 0, si vyzkoušej oboje a uvidíš


} ELSE if($vsechny_radky == "ano";) {
// pokud budeš chtít vypsat všechny příchody tak se promena $vsechny_radky musi rovnat "ano" to docili stejnym zpusobem jako u $prvni_radek a pokud to budeš mít jako stránku na kterou bude mířit odkaz v menu tak to napises takto(to url te zajma) <A href="counter.php&vsechny_radky=ano">(to naopises do toho menu)


$fp = FOpen ("counter.dat", "r");
$data = FRead ($fp, FileSize("counter.dat"));
FClose($fp);

$data = Str_Replace("<br>"," \n ", $data); // toto je na to aby se ti to zabrazovalo pekne na kazdem radku, ale nevim jestli to bude premavat

echo $data;

}



Nevím pořádně co to má být a jak to má fungovat ale snad ti to nějak helpne. Kdyby něco tak sem napiš a pokud mě někdo nepředběhne tak ti i odpovím.
Gerbil
Profil *
Díky za snahu :)
Ja mám na mysli skript, ktorý by mi zobrazil akoby históriu príchodov užívateľov, čiže by som videl napr. 14. máj, časy, kedy kto prišiel a zároveň IP dotyčných. Je to preto, aby som zistil IP jedného užívateľa, ktorý prispieval do diskusie, no už prestal, čiže na stránku možno ani nechodí. Je také dačo vôbec možné? Vopred ďakujem za odpovede.
WertriK
Profil *
Sak dyt to je ono, jen to chce par zmen ale jinak je to co chces. Mozna te tam zmatlo to posilani cookie ale to jen proto aby kdyz si nekdo da v prohlizeci "obnovit" aby se tam nezapsal znovu prichod

do toho te horni stranky das (nebo do leveho menu, nebo do uvodni stranky)

<?
$write = "ok";
include "counter.php";
?>


ten odkaz az se budes na to chtit podivat bude vypadat :
<a href="counter.php&show=all">blabla</a>

soubor counter.php

<?

// <-= ZAPIS NOVEHO PRICHODU =->

if($write == "ok") {

$counter_cookie = $HTTP_COOKIE_VARS['countcookie'];
if($counter_cookie != "1") { // pokud to není hodinu tak nic
setcookie("countcookie", "1",Time()+3600); // pokud je to ok, pošlem cookie že jsme tu byli
$ip = $REMOTE_ADDR;

$datum = Date("j. " . "m. " . "Y, " . "H:i:s");
$write = "Příchod \"$ip\" v $datum. \n";
$fp = FOpen ("counter.dat", "r");

$data = FRead ($fp, FileSize("counter.dat")); // načtem staré příchody aby byl nový nahoře

FClose($fp);
$fp = FOpen ("counter.dat", "w");

FWrite ($fp, $write.$data); // zapíšeme prvně nový potom staré příchody

FClose ($fp);
} ELSE {

// pokud si by si někdo prohlížel tvé stránky hodinu, tak aby se to nezapočítavalo

// prostě se to bude počítat hodinu od poslédního načtení
setcookie("countcookie", "1",Time()+3600);
}

}

// <-= VYPIS PRICHODU =->

if($show == "all") {

// pokud budeš chtít vypsat všechny příchody tak se promena $vsechny_radky musi rovnat "ano" to docili stejnym zpusobem jako u $prvni_radek a pokud to budeš mít jako stránku na kterou bude mířit odkaz v menu tak to napises takto(to url te zajma) <A href="counter.php&vsechny_radky=ano">(to naopises do toho menu)


$fp = FOpen ("counter.dat", "r");

$data = FRead ($fp, FileSize("counter.dat"));

FClose($fp);
$data = Str_Replace("<br>"," \n ", $data); // toto je na to aby se ti to zabrazovalo pekne na kazdem radku, ale nevim jestli to bude premavat
echo $data;
}
?>


melo by ti vypsat treba :

Příchod "197.248.047.69" v 29.5.2005 20:43:55.
Gerbil
Profil *
Už to skoro mám - odkaz som dal do úvodu (priebežne), pričom v hlavnom adresári webu mám súbory counter.php a counter.dat. Ten counter.php obsahuje skript vyššie napísany a .dat súbor som nechal prázdny. Tu však neviem nastaviť to "právo" na 0777. Akonáhle to spravím, už by to malo ísť?

P.S. Teraz keď kliknem na odkaz, vypíše sa mi, že

The page cannot be found
WertriK
Profil *
The page cannot be found
moje chyba sry ten odkaz musi byt
<a href="counter.php?show=all">blabla</a>
Prava nastavis treba pres TotalCommandera pripojis se na ftp a oznacis soubor counter.dat (jednou na nej kliknes levym mysitkem) potom das v levo nahore "soubory" > změna atributů a zaskrtas vsechny policka a das ok....
Gerbil
Profil *
Spravil som, ako vravíš. Teraz, keď kliknem na odkaz, ukáže sa prázdna stránka, to značí, že je chyba v skripte?

Do counter.php som dal tento text:


<?
// <-= ZAPIS NOVEHO PRICHODU =->
if($write == "ok") {
$counter_cookie = $HTTP_COOKIE_VARS['countcookie'];

if($counter_cookie != "1") { // pokud to není hodinu tak nic

setcookie("countcookie", "1",Time()+3600); // pokud je to ok, pošlem cookie že jsme tu byli

$ip = $REMOTE_ADDR;
$datum = Date("j. " . "m. " . "Y, " . "H:i:s");

$write = "Příchod \"$ip\" v $datum. \n";

$fp = FOpen ("counter.dat", "r");
$data = FRead ($fp, FileSize("counter.dat")); // načtem staré příchody aby byl nový nahoře
FClose($fp);

$fp = FOpen ("counter.dat", "w");
FWrite ($fp, $write.$data); // zapíšeme prvně nový potom staré příchody
FClose ($fp);

} ELSE {
// pokud si by si někdo prohlížel tvé stránky hodinu, tak aby se to nezapočítavalo
// prostě se to bude počítat hodinu od poslédního načtení

setcookie("countcookie", "1",Time()+3600);

}
}
// <-= VYPIS PRICHODU =->
if($show == "all") {
// pokud budeš chtít vypsat všechny příchody tak se promena $vsechny_radky musi rovnat "ano" to docili stejnym zpusobem jako u $prvni_radek a pokud to budeš mít jako stránku na kterou bude mířit odkaz v menu tak to napises takto(to url te zajma) <A href="counter.php&vsechny_radky=ano">(to naopises do toho menu)


$fp = FOpen ("counter.dat", "r");
$data = FRead ($fp, FileSize("counter.dat"));
FClose($fp);

$data = Str_Replace("<br>"," \n ", $data); // toto je na to aby se ti to zabrazovalo pekne na kazdem radku, ale nevim jestli to bude premavat

echo $data;

}

?>


---------------------------------
Ďakujem za ochotu, WertriK
WertriK
Profil *
Podivej se do souboru counter.dat jestli v nem je neco zapsane, pokud ne tak to bude chyba v zapisu.
Nejlepsi bude kdys toto :



<?
// <-= ZAPIS NOVEHO PRICHODU =->
$counter_cookie = $HTTP_COOKIE_VARS['countcookie'];

if($counter_cookie != "1") { // pokud to není hodinu tak nic

setcookie("countcookie", "1",Time()+3600); // pokud je to ok, pošlem cookie že jsme tu byli

$ip = $REMOTE_ADDR;
$datum = Date("j. " . "m. " . "Y, " . "H:i:s");

$write = "Příchod \"$ip\" v $datum. \n";

$fp = FOpen ("counter.dat", "r");
$data = FRead ($fp, FileSize("counter.dat")); // načtem staré příchody aby byl nový nahoře
FClose($fp);

$fp = FOpen ("counter.dat", "w");
FWrite ($fp, $write.$data); // zapíšeme prvně nový potom staré příchody
FClose ($fp);

} ELSE {
// pokud si by si někdo prohlížel tvé stránky hodinu, tak aby se to nezapočítavalo
// prostě se to bude počítat hodinu od poslédního načtení

setcookie("countcookie", "1",Time()+3600);

}

?>


das upne na zacatek souboru index.php(pokud mas index.htm tak to musis prejmenovat na index.php), kdyz rikam na zacatek tak upne jeste nez ti zacina <html> tag tak uplne na zacatek.
No a do souboru counter.php vloz toto:


<?

$fp = FOpen ("counter.dat", "r");
$data = FRead ($fp, FileSize("counter.dat"));
FClose($fp);

$data = Str_Replace("<br>"," \n ", $data); // toto je na to aby se ti to zabrazovalo pekne na kazdem radku, ale nevim jestli to bude premavat

echo $data;

?>



Odkaz na to muze byt uz <A href="counter.php">counter</A>

Memusis za nic dekovat......
Gerbil
Profil *
Okay, skript už funguje, no zapisuje IPčka a príchody len od jeho zahájenia. Nedá sa nejako sprístupniť "história" webu, kde by boli všetky príchody odvtedy, čo bol web spustený (október 2004)?
WertriK
Profil *
Pres php asi ne, jen pres server admina. Treba ja mam hosting u pipni a kdyz se tam prihlasim tak tam mam nejake pocitadla atd. ale tohle nevim jestli tam bude.Pokud mas nejaky freehosting tak asi tezko.....
Gerbil
Profil *
Nie, ja mám platenú doménu, lenže v počítadlach to nie je... každopádne, ak by si o niečom vedel, pls napíš.
Leo
Profil
"Nie, ja mám platenú doménu, lenže v počítadlach to nie je... každopádne, ak by si o niečom vedel, pls napíš."

Tak napiste na technickou podporu jestli vam umozni pristup k logum webserveru pro vasi domenu. Leo
Anonymní
Profil *
Ja som sa už pýtal na log a dostal som link so štatistikami, s návštevnosťou a pod., no tam to neni. Údajne si mám na to spraviť skript...
Leo
Profil
Na analyzu logu existuji i programky, zkus Google, jinak je to treba skript ktery nacte soubor (je textovy) a jednotlive radky parsuje, Leo
Toto téma je uzamčeno. Odpověď nelze zaslat.

0