![]() |
![]() ![]() |
![]() |
![]()
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."."; ?> |
|
|
![]()
Post
#2
|
|
![]() Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź ![]() |
Takie rzeczy wyjaśniamy w Przedszkolu.
Przenoszę. -------------------- Life's simple... You make choices and don't look back...
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 57 Pomógł: 18 Dołączył: 15.04.2009 Skąd: Kwidzyn Ostrzeżenie: (0%) ![]() ![]() |
No to tak:
Linijka 1: ustawienie minut Linijka 2: ustawienie czasu Linijka 3: pobranie pliku tekstowego i zapisanie do zmiennej Linijka 4: zliczenie ile linijek zawiera plik tekstowy pobrany wyżej Linijka 5: pobranie ip odwiedzającego Linijka 6: rozpoczęcie pętli ($i równe zero, wyświetlane póki $i jest mniejsze od $ile, powiększaj $i o jeden przy każdej kolejnej iteracji) Linijka 7: przypisanie do zmiennej $pol tablicy Linijka 8: instrukcja warunkowa tu chyba nie ma co tłumaczyć Tyle Ci na razie napisałem, ogólnie jestem przeciwnikiem zapisywania danych w plikach tekstowych, i nawet nie praktykowałem tego dlatego też funkcje z tym związane opisze ktoś bardziej ogarnięty w tym temacie. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 84 Pomógł: 0 Dołączył: 12.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ja osobiście też preferuje bazy i korzystam z nim za każdym razem jak potrzebuje chociaż w przypadku liczników wydaje mi się, że tworzenie plików tekstowych jest bardziej praktyczne. Twój opis jest trochę bardzo ubogi
![]() ![]() |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 57 Pomógł: 18 Dołączył: 15.04.2009 Skąd: Kwidzyn Ostrzeżenie: (0%) ![]() ![]() |
http://php.net/manual/en/function.time.php
Coś mi się wydaje, że nie tyle nie rozumiesz co ci się nie chce. Nawet nie sprawdziłeś tego skryptu. Na twoim miejscu bym go uruchomił a pózniej analizował a nie od razu leciał na forum. Cytat na tyle to i ja potrafię sobie to wytłumaczyć Wiesz następnym razem pisz czego nie rozumiesz bo widzę, że niepotrzebnie traciłem czas, może doceń, że chce Ci pomóc a nie zachowujesz się jak przedszkolak, no tak zasugerowałeś się nazwą działu ![]() |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 84 Pomógł: 0 Dołączył: 12.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
dziamber nie zrozum mnie źle. Strona którą mi podałeś to już czytałem. Skrypt jak najbardziej zastosuje ale skoro ktoś go umieścił jako gotowca zakładam, że działa ale co z tego, że zobaczę co wyświetla skoro gdy bym miał później sam napisać taki licznik to bym poległ. Haha co do działo to sam zostałem przeniesiony
![]() Cytat czytałem, że zmienna time() przechowuje czas w sekundach a przynajmniej tak zrozumiałem, ale strona ta nie daje mi odpowiedzi na moje pytanie jaką wartość będzie miała zmienna $czas - mogę jedynie przypuszczać, że mam rację a to czasem za mało. A co do Twojego czasu to nie poszedł na marne tym bardziej, że posłużę się jeszcze Twoją odpowiedzią do kolejnych pytań ale jak najlepiej zrozumieć kod. |
|
|
![]()
Post
#7
|
|
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 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 84 Pomógł: 0 Dołączył: 12.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
mortus wiec sugerujesz aby napisał coś sam niż skorzystał z tego jak sam wspomniałeś: "co najmniej dziwnego" kodu?
![]() ![]() |
|
|
![]()
Post
#9
|
|
![]() Grupa: Nieautoryzowani Postów: 2 249 Pomógł: 305 Dołączył: 2.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
@zagiewa: Najlepiej dodać też ciasteczka, a dopiero potem sprawdzać IP. Tez nie idealny sposób, ale skuteczniejszy i dający bardziej wiarygodne wyniki.
-------------------- Google knows the answer...
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 16.07.2025 - 00:41 |