Emne: PHP (RSS 2.0)
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
19. april 2008, kl. 18:38

Blog ping

Synes lige jeg burde dele et guldkorn mere (de guldkorn omtalt i Søgemaskineoptimering) som jeg fandt undervejs. Det åbenbart en god ide at pinge de hjemmesider der har oversigter over diverse RSS feeds. Dette kan gøres manuelt, men der er også metoder til at udføre det automatisk. Martin Nielsen har eksempelvis udviklet en PHP-funktion til "hjemmestrikkede" blogsystemer, som han selv formulere det, der kan gøre alt dette pingvineri automatisk. Jeg må hellere selv få implementeret det i mit system hurtigst muligt.

Link: Martin Blog Ping v0.5

Tilføjet af Mikkel Langelykke
15. april 2008, kl. 14:59

IE og content-type problemer

I mit forsøg på at få min hjemmeside valideret på validator.w3.org, har jeg haft lidt problemer med content-type. Content-type er den type webserveren angiver i MIME-formatet, når siden sendes til modtageren. Default er 'text/html' men ifølge W3C skal dette altså sendes som værende 'application/xhtml+xml'. Fair nok - så smider man da bare lidt php-kode op i toppen af dokumentet.

header('Content-type: application/xhtml+xml; charset=iso-8859-1');

Det virkede dog ikke efter hensigten, da Internet Explorer åbenbart ikke godkender denne content-type. Så i stedet for at loade en side ind vil IE blot sende en fil med hele koden. Dette er ikke just særlig optimalt. Eneste løsning er derfor at kun sende den W3C valide content-type til alle andre browser end lige IE.

$useragent = $_SERVER['HTTP_USER_AGENT'];

if (!preg_match('|MSIE ([0-9].[0-9]{1,2})|', $useragent)) {
    header('Content-type: application/xhtml+xml; charset=iso-8859-1');
    }
Tilføjet af Mikkel Langelykke
Side 1