Emne: Programmering (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
12. juni 2008, kl. 20:12

Pænere URL'er med mod_rewrite

Som Martin Seebach påpegede i kommentarerne i det tidligere indlæg, SEO Basics, så var der stadig plads til småjusteringer. Men nu skulle "kritikpunkterne" da være blevet fejet af vejen.

Mest bøvlet har været at fjerne titlen fra query-string. Det krævede lidt arbejde, men fik da samtidig ryddet op i en noget ad hoc kode. Jeg valgte den relativt lette måde til at få "mappe-adresser" til at pege på index.php. Smid en .htaccess fil ind i root-mappen med følgende tekst.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)/$ index.php

RewriteCond bruges kun for at undgå, at mapper, der rent faktisk eksistere, ikke bliver omdirigeret til index.php. Så manglede jeg kun lidt php-kodning for at få logik ud af de nye adresser.

En glimrende begynderartikel om Apaches mod_rewrite hjalp mig på vej. Efterfølgende faldt jeg dog også over ilovejackdaniels.com's mod_rewrite cheat sheet. Han har også flere fornuftige "cheat sheets".

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