Witam, mam skrypt na naliczanie odwiedzających i osób online, lecz mam problem z wyświetleniem tego.
Skrypt<?
########################### Licznik uq / online
if ($_SERVER["HTTP_X_FORWARDED_FOR"] != "")
{
$IP = $_SERVER["HTTP_X_FORWARDED_FOR"];
$proxy = $_SERVER["REMOTE_ADDR"];
$host = @gethostbyaddr($_SERVER["HTTP_X_FORWARDED_FOR"]);
}
else
{
$IP = $_SERVER["REMOTE_ADDR"];
$host = @gethostbyaddr($_SERVER["REMOTE_ADDR"]);
} // tutaj pobieramy IP i sprawdzamy czy delikwent łączy się przez proxy
$ref = $_SERVER['HTTP_REFERER'];
$plik = "lista";
$tablica=file($plik); // wrzucamy plik odwiedziny do zmiennej w postaci tablicy $buffer=$tablica[count($tablica)-1
]; // liczymy długość tablicy (ilość linijek w pliku)
$lip=explode("!@!@!",$buffer); // zamiast wrzucać date, ip i proxy linijka pod linijką, wrzucamy je w jedną i oddzielamy je ciągiem znaków !@!@! :)
$string = file_get_contents($plik); // pobieramy zawartość pliku odwiedziny i przypisujemy do zmiennej $string $szukane = date("j.m.Y").'!@!@!'.$IP; // zmiennej $szukane przypisujemy szukaną wartość if (preg_match('/'.$szukane.'/i', $string)) // szukamy czy istnieje już wpis z taką datą i adresem IP {
end; // jeśli już istnieje to nic nie dodajemy do listy }
else // jeśli niema takiego wpisu to zostaje on dodany
{
$zzz=fopen($plik,"a"); // otwieramy plik do nadpisania fputs($zzz,date("G:i:s").'!@!@!'.date("j.m.Y").'!@!@!'.$IP.'!@!@!'.$host.'!@!@!'.$ref."\n"); // zapisujemy odwiedziny w tej 'dziwnej' formie ;) fclose($zzz); // zamykamy plik }
$zzz=fopen($plik,"r"); //otwieranie pliku tylko do odczytu while ($linia=fgets($zzz,4096))// pętla która czyta plik w którym zapisana jest lista odwiedzin {
$unikalne++; // taki durny sposób na policzenie linijek - czyli ilości całkowitej wejść na naszą stronę :)
}
fclose($zzz);// zamykanie pliku
$liczba_wierszy = sizeof ($plik);
for ($i=0; $i<=$liczba_wierszy; $i++) // pętla przelatuje przez wszystkie zapisane wiersze w poszukiwaniu odwiedzin z dziś, wczoraj i z ostatnich 7 dni
{
if (date('j.m.Y') == $linia[1]) // sprawdza warunek czy jest wpis z dzisiejszą datą {
$dzis++; // zlicza ilość wszystkich wpisów z dziejszą datą
}
if ($linia[1
] == date('j.m.Y',time()-86400) ) // sprawdza warunek czy jest wpis z wczorajszą datą {
$wczoraj++; // zlicza ilość wszystkich wpisów z wczorajszaą datą
}
if (time()-604800
<= strtotime($linia[1])) // sprawdza warunek czy są wpisy z ostatnich 7 dni {
$tydzien++; // zlicza ilość wszystkich wpisów z ostatnich 7 dni
}
}
$czas = time(); // aktualny czas $do_zapisania="$ID:$czas"; // sposób w jaki zapisujemy aktualnie znajdującą się osobę na stronie: "id sesji":"czas w sekundach"
$min_czas=300; // czas przez jaki zapisane jest wejście danej osoby
$plik2="online"; // plik w którym są zapisywane osoby aktualnie przeglądające naszą stronie - ostatnie 5 minut
$nowa=false; // ustala domyślną zmienną która oznacza że nie będzie nowego wpisu
$odczyt = fopen($plik2, "r"); // otwiera plik tylko do odczytu fclose($odczyt); // zamyka plik
if ($users=="") // sprawdzenie czy jest już jakiś wpis w pliku "online", jeśli nie to dodaje wpis: "$ID:$dzis_data"
{
$online=1;
$save=$do_zapisania;
}
else // w innym przypadku sprawdza istniejące wpisy
{
while (list
($key,$value)=each($uzytkownik)) {
list
($old_id, $old_time) = explode(":",$value); // przypisywanie listy zmiennych if ($old_id!=$ID) // jeżeli istniejący id się różni od aktualnie sprawdzanego id
{
if ($czas-$old_time < $min_czas)
{
$new[]=$old_id.":".$old_time; // przypisanie zmiennej $new[] która jest tablicą id sesji starych danych
}
}
else
{
$new[]=$do_zapisania; // przypisanie zmiennej $new[] która jest tablicą id sesji $ID:$dzis_data
$nowa=true; // zezwolenie na dodanie nowego wpisu
}
}
if ($nowa==false) // jeżeli nie ma nowego wpisu
{
$new[]=$do_zapisania; // przypisanie zmiennej $new[] która jest tablicą id sesji $ID:$dzis_data
}
$online=count($new); // zliczenie ilości wpisów, które oznaczają ilość osób aktualnie znajdujących się na naszej stronie $save=implode("\n",$new); // przygotowanie nowego wpisu który zostane dodany w nowej linii }
$zapisz_plik = fopen($plik2, "w"); // otwieranie pliku do zapisu fwrite($zapisz_plik, $save); // zapis pliku z nowymi wartościami fclose($zapisz_plik); // zamknięcie includes/tmp
function listaip() {
function truncateUrl($url,$start,$end,$limit){
$poczatek = substr($url,0
,$start); $newUrl = $poczatek.'...'.$koniec;
return $newUrl;
}else{
return $url;
}
}
$plik = "lista";
$buffer=$tablica[count($tablica)-1
];
switch ($_GET['pokaz'])
{
case'uq':
{
<tr>
<td width='15%'><font size='1' face='Tahoma' color='red'><b>Data</td>
<td ><font size='1' face='Tahoma' color='red'><b>IP</td>
<td width='30%'><font size='1' face='Tahoma' color='red'><b>Host</td>
<td ><font size='1' face='Tahoma' color='red'><b>Adres strony</td>
</tr>";
$liczba_wierszy = sizeof ($plik);
for ($i=$liczba_wierszy-80; $i<=$liczba_wierszy-1; $i++) // wyświetlimy teraz ostatnie 20 wpisów, zamiast wszystkich których może być kilka tysięcy...
{
echo "<tr><td><font size='1' face='Tahoma' color='#c0c0c0'><b>$linia[1] $linia[0]</td> <td><font size='1' face='Tahoma' color='#c0c0c0'><b>$linia[2]</td>
<td><font size='1' face='Tahoma' color='#c0c0c0'><b>$linia[3]</td>
<td><font size='1' face='Tahoma' color='#c0c0c0'><b><a href='$linia[4]'>";echo truncateUrl($linia[4],50,5,55);echo"</a></td>
</tr>";
}
}
break;
}
}
?>
Wyświetlanie
$plik = "lista";
function truncateUrl($url,$start,$end,$limit){
$poczatek = substr($url,0
,$start); $newUrl = $poczatek.'...'.$koniec;
return $newUrl;
} else {
return $url;
}
echo"<table width='755px' border='1' rules='all' frame='void'>
<tr align='center'>
<td width='16%'><font size='1' face='Tahoma' color='red'><b>Data</td>
<td ><font size='1' face='Tahoma' color='red'><b>IP</td>
<td width='30%'><font size='1' face='Tahoma' color='red'><b>Host</td>
<td ><font size='1' face='Tahoma' color='red'><b>Adres strony</td>
</tr>";
$liczba_wierszy = sizeof ($plik);
for ($i=$liczba_wierszy-80; $i<=$liczba_wierszy-1; $i++) // wyświetlimy teraz ostatnie 20 wpisów, zamiast wszystkich których może być kilka tysięcy...
{
echo "<tr><td><font size='1' face='Tahoma' color='#c0c0c0'><b>$linia[1] $linia[0]</td> <td><font size='1' face='Tahoma' color='#c0c0c0'><b>$linia[2]</td>
<td><font size='1' face='Tahoma' color='#c0c0c0'><b>";echo truncateUrl($linia[3],31,5,36);echo"</td>
<td><font size='1' face='Tahoma' color='#c0c0c0'><b><a href='$linia[4]'>";echo truncateUrl($linia[4],42,5,47);echo"</a></td>
</tr>";
}
Plik lista17:50:15!@!@!27.07.2012!@!@!7*.25*.1*7.141!@!@!*7-25*-15*-1*1.adsl.inetia.pl!@!@!
17:46:42!@!@!28.07.2012!@!@!*7.2*4.1*9.1*8!@!@!7*-*5*-1*9-**8.adsl.inetia.pl!@!@!
I niestety nie wyświetla mi tych rekordów z pliku lista, wygląda to tak:
http://ss-host.pl/images/1jvj.png
Ten post edytował LucKy_skiLL 28.07.2012, 17:14:02