16. juni 2008, kl. 20:48

Bloker IP-ranges med preg_match

Som jeg har nævnt før spammer Windows Live min Woopra-statistik. Umiddelbart er det fra IP'erne 65.55.109.xxx og 65.55.110.xxx at de mærkelige søgninger kommer fra. For at blokere disse to IP-ranges benytter jeg regular expression funktionen preg_match i PHP.

$ip = $_SERVER['REMOTE_ADDR'];
if (!preg_match("/^65.55.(109|110).(d{1,3})$/", $ip)) {
    // WOOPRA KODE
    }

Jeg vil i det følgende gennemgå expression-mønsteret.

1. Delimiters Expression-mønsteret, der skal tjekkes for, skal være afgrænset af to afgrænsene tegn (delimiters). I dette tilfælde /. Dette kunne også være (), {}, [] mv.

2. Start på strengen ^ benyttes til at indikere starten på strengen.

3. Almindelige tegn Almindelige tegn som bogstaver og tal kan skrives direkte ind i mønsteret. Dette gælder for tallene 65 og 55.

4. Escape specielle tegn Specielle tegn skal "undslippes" med et back-slash.

5. Enten-eller | benyttes til at vælge imellem to eller flere muligheder. I dette tilfælde tjekkes der om 109 eller 110 står som det tredje nummer i IP'en.

6. Encifret tal (digits) d indikerer at det skal være encifret tal.

7. Antal {1,3} indikerer at der skal være 1 til 3 af de, i punkt 6, encifrede tal.

8. Slut på strengen $ benyttes til at indikere slutningen på strengen.

Tilføjet af Mikkel Langelykke
Emner: PHP, Programmering

Kommentarer



Skriv din kommentar her
Navn:

E-mail:
(Benyttes kun til gravatars)
Hjemmeside:

Gengiv teksten i billedet:


Kommentar: