Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [fragment] Blokowanie narodowości., PHP BAN COUNTRY
Regz
post 16.10.2015, 09:46:29
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 16.10.2015

Ostrzeżenie: (10%)
X----


Witam, wiele osób zmagało się z trudnym tematem tego jak zablokować daną narodowość / kraj
na swojej stronie internetowej. Stało się już nawet modne zasięganie do wielkich baz danych
typu ip2country. Jest to niestety bardzo dużo roboty dla programisty a znalezienie rozwiązania
prostego i rewelacyjnego przyszło mi na myśl właśnie dzisiaj kiedy musiałem zablokować
pewnego bota spamującego z różnych IP z Ukrainy który wchodził na forum znajomego
opartego na IP Board.

Tytułem wstępu:

Usługi które służą wspólnemu dobru należy szanować a taką usługą jest whois
aby nie zaśmiecać serwerów whois za dużą ilością zapytań nie należy wykonywać
skryptu więcej niż raz dla jednego adresu ip więc polecam przechowywać cache
wyników. W skrypcie zrobiłem jednak rozwiązanie oparte na sesjach, aby
zapytania nie wykonywały się częściej niż jeden raz dla poprawnej sesji.

Wykorzystane funkcje:

+ Sprawdzenie istnienia zmiennej sesyjnej

http://php.net/manual/en/function.isset.php

+ Obsługa połączenia z serwerem Whois

http://php.net/manual/en/function.fsockopen.php
http://php.net/manual/en/function.fwrite.php
http://php.net/manual/en/function.fgets.php
http://php.net/manual/en/function.feof.php
http://php.net/manual/en/function.fclose.php

+ Sprawdzenie czy istnieje blokowany string

http://php.net/manual/en/function.strpos.php

Dobrze dobrze ale gdzie skrypt?

http://phpdevil.blogspot.com/2015/10/php-p...arodowosci.html

Zapraszam do komentowania i proponowania poprawek smile.gif
Go to the top of the page
+Quote Post
Pyton_000
post 16.10.2015, 09:54:47
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Słabe, bardzo słabe...

Twoim rozwiązaniem przy mojej skromnej bazie ok 350 tyś unikalnych IP wyszukiwanie jest mordercze...
Nie dość że wczytujesz plik wiersz po wierszu w pętli to jeszcze potem strpos? Masakra.
Równie dobrze możesz sobie wylosować true/false i zablokować usera.


Pomysł z zapisaniem w sesii dla IP jak najbardziej ok.



Ten post edytował Pyton_000 16.10.2015, 10:41:35
Go to the top of the page
+Quote Post
Regz
post 16.10.2015, 10:14:43
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 16.10.2015

Ostrzeżenie: (10%)
X----


Nie wczytuję pliku, tylko otwieram połączenie z serwerem który zwraca informację whois.
Nie mam zamiaru wczytywać 350 tyś unikalnych IP na raz bo to w ogóle nie ma sensu.
Co do funkcji strpos równie dobrze może być to wyrażenie regularne. Masz wolną rękę.

To rozwiązanie sprawdza się aktualnie przy 6k użytkownikach na forum znajomego bez
problemu, jest natomiast rozszerzone o inne mirrory whois aby nie katować serwerów
i o cacheowanie wyników więc jeśli zapamięta że dany adres jest danej narodowości
to zapisuje w bazie danych i sprawdza gdy upłynie czas w pliku konfiguracyjnym
czego niestety przy bazach ip2country nie da się wykonać bo adresy bywają
przyznawane różnie.

Dziękuję za opinię. smile.gif

Ten post edytował Regz 16.10.2015, 10:16:40
Go to the top of the page
+Quote Post
Pyton_000
post 16.10.2015, 10:41:57
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Dobra fakt, mój błąd. Mam dość młota udarowego sąsiadów... chyba czas odpocząć...
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 13:30