Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [fragment] Blokowanie narodowości., PHP BAN COUNTRY
Regz
post
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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Regz
post
Post #2





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ę. (IMG:style_emoticons/default/smile.gif)

Ten post edytował Regz 16.10.2015, 10:16:40
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: 21.11.2025 - 05:06