Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Niezrozumiały dla mnie licznik on-line
Zagiewa
post
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 0
Dołączył: 12.08.2009

Ostrzeżenie: (0%)
-----


Witam. Uczę się dopiero php i obecnie postanowiłem napisać własny licznik on-line zamiast korzystać z darmowych, problemem jednak było się jak go zrobić (bo nie wiedziałem jakiej funkcji/zmiennej użyć aby rozpoznawała ona obecność czyjego ip na stronie) więc zacząłem szukać darmowego i znalazłem kod na stronie webcoding.pl gdzie poniżej zamieszczam jego kod. Nie wiem czy działa bo jego go nie sprawdzałem ale jako, że się uczę nie sposób skopiować i wkleić skrypt tylko go zrozumieć no i właśnie tutaj mam prośbę do was bo strasznie jak dla mnie ten kod jest zagmatwany:/ Czy ktokolwiek z was mógł by mi go wytłumaczyć linijka po linijce? jest krotki więc dla was nie powinien być jakimś szczególnym wyzwaniem. Z góry dziękuję.
Kod
<?
$minuty=10;
$czas=time()+60*$minuty;
$bazaip = file("online.txt");
$ile=count($bazaip);
$ip = $_SERVER["REMOTE_ADDR"];
for ($i=0;$i<$ile;$i++) {
$pol = explode("`",$bazaip[$i]);
if ($pol[2] if ($pol[1]==$ip) {
$bazaip[$i]="`$ip`$czas` "; $jest=1;
}
}
if ($jest<>1) $bazaip[]="`$ip`$czas` ";
$f = fopen("online.txt","w");flock($f,2);
for ($i=0;$i<$ile+1;$i++) {
if ($bazaip[$i]<>"") { fwrite($f, $bazaip[$i]); $ileip++;}
}
flock($f,3); fclose($f);
echo "Osób on-line:".$ileip.".";
?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Przede wszystkim time() to nie zmienna, a funkcja. Funkcja ta zwraca aktualny czas w sekundach, ale od 1 stycznia 1970 roku od godziny 00:00:00 GMT. Po drugie podany kod nie ma prawa zadziałać, ponieważ warunek w linii 9 jest co najmniej "dziwny", a na pewno nieprawidłowy. Po trzecie zmienna $czas jest w tym skrypcie zapisywana do pliku, obok adresu ip, ale w sumie nie wiemy po co (i nawet ciężko mi zgadnąć zamiary autora).

Tak szczerze powiedziawszy, to nawet nie ma sensu tłumaczyć tego skryptu. Natomiast schemat postępowania w takim przypadku powinien być następujący:
1. pobieramy adres ip ze zmiennej $_SERVER['REMOTE_ADDR'],
2. odczytujemy zawartość pliku z dysku i odpowiednio rozbijamy na tablicę,
3. w pętli po otrzymanej tablicy sprawdzamy, czy adres ip jest w niej zapisany,
4a. jeśli tak, to pobieramy tylko liczbę zapisanych adresów,
4b. jeśli nie to zapisujemy adres ip do pliku i zwiększamy liczbę adresów online o 1.
Tyle. Sposobów realizacji jest tyle, ilu programistów. Spróbuj coś napisać, a w razie problemów pisz.

Ten post edytował mortus 7.04.2010, 17:46:35
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 21:08