Hej.
Jeg er lige nu i gang med at lave en funktion til at blokere via den besøgenes ISP. Lige nu har jeg ikke helt fundet ud af, hvordan jeg skal kunne gøre det, selvom jeg har rodet lidt med in_array og preg_match. Indtil nu har intet virket, som jeg havde forventet...
Grunden til at jeg vil gøre det er, at jeg tidligere har observeret, at der var nogle specifikke ISP'er, som oprettede bruger hver eneste dag over flere måneders tid, uden af nogle af dem foretog noget som helst. Derudover kunne man også se, at deres e-mail adresser ikke virkede til at være lavet manuelt, men med en eller anden bot, som bare fyrede en masse kombinationer af hos hotmail og andre lignede steder.
Man kunne udover det også se, at de kom fra rusland og Ukraine, hvilket må være endnu en grund til at finde det suspekt.
Min PHP kode ser sådan her ud:
- // Checks if a specific host is blacklisted
- function check_ip_host($ip) {
-
- $ip_host = gethostbyaddr($ip);
- $blacklisted_hosts = array();
- $blacklisted_hosts[] = "kyivstar.net";
- $blacklisted_hosts[] = "sovam.net.ua";
- $blacklisted_hosts[] = "megacom.biz";
- $blacklisted_hosts[] = "kimsufi.com";
- $blacklisted_hosts[] = "h1host.ru";
- $blacklisted_hosts[] = "*-static.dk.customer.tdc.net";
-
- if (in_array($ip_host, $blacklisted_hosts)) {
-
- return false;
-
- } else {
-
- return true;
-
- }
-
- }
Det virker dog ikke til, at man med et wildcard på denne måde kan bruge in_array (se sidste $blacklisted_hosts). Det virker dog, hvis man skriver den specifikt ind, men det virker som en meget ineffektiv måde at gøre det på.
Er der nogle, som ved, hvordan man kan lave det med wildcards eller med preg_matchs, som benytter et array til at se, hvilke der er blacklistede?
På forhånd, tak for hjælpen
.
Indlæg senest redigeret d. 26.11.2013 17:46 af Bruger #14776