Hämta thepiratebay med cURL

June 22nd, 2014 | Posted by admin in How-to | Tips | Webbutveckling - (2 Comments)

Att hämta thepiratebay(.se) med cURL borde vara ganska lätt. Thepiratebay skickar tillbaka responsen till en request i gzip-format. Därför behöver man avkoda svaret för att se html-koden istället för gzip-kodningen. Detta gör man i requestheadern där man sätter Accept-Encoding till gzip. Alltså:

header_array[] = “Accept-Encoding: gzip”;
curl_setopt(CURLOPT_HTTPHEADER, $header_array);

Om detta inte funkar så kan man också testa att sätta CURLOPT_ENCODING till gzip. Alltså:

curl_setopt($ch, CURLOPT_ENCODING, “gzip”);

Nu kommer man få response-bodyn i vanlig html.

Codeigniter är ett bra framework för php. Men det finns ett jobbigt moment med detta framework, och det är att index.php inte automatiskt tas bort från url:er trots att man oftast inte vill ha det i sina projekt.

I user guiden rekommenderar de att man använder .htaccess-filen och modrewrite för att ta bort index.php. De rekommenderar följande bit modrewrite kod:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

Stycket innebär att index.php plockas bort men man får även normal tillgång till index.php-filen, en mapp som heter images och robots.txt filen.

Jag hittade ett modrewrite-stycke på nätet som tar bättre hänsyn till vad en användare begär i sina url:er:


RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]


ErrorDocument 404 /index.php

I det här fallet kommer index.php att tas bort, men man har även normal tillgång till alla filer och mappar och inte bara till de filer och mappar som exklusivt är namngivna som i första fallet.

Sen finns det ett irriterande special fall som förutom modrewrite kräver en extra åtgärd. Det är när man använder form_open-metoden som ingår i Form Helper som är specialfallet. När man använder denna metod för att ange den öppnande

-taggen för ett formulär och sedan använder formuläret och skickar iväg det så ser man att index.php återvänder i url:erna på den resulterande sidan, trots att man använder en htaccess-fil för att ta bort index.php. Lösningen här är enkel men inte helt uppenbar. Öppna config.php i config-mappen. Omkring rad 30 ser du att det står:

$config[‘index_page’] = ‘index.php’;

Men som det står i den beskrivande texten för denna inställning så ska denna inställning lämnas blank när man använder en htaccess-fil för att ta bort index.php. Så det är bara att ändra denna till:

$config[‘index_page’] = ”;

Nu ska index.php vara borta i alla url:er överallt när man använder Codeigniter.

Teckenhelvete med MySQL och PHP

August 15th, 2012 | Posted by admin in Databas | Tips | Webbutveckling - (0 Comments)

Håller på och kodar på en ny sida (extentor.nu). Stötte på problemet att åäö-teckena visades som ett frågetecken. Jag har stött på problemet förr så jag brukar vara noga inför nya projekt att överallt använda UTF-8. För det här är en av de vanligast förekommande problemen, men ändå mest svårlösta problemen när man håller på med webbutveckling. Problemet kan sitta var som helst i kedjan mellan databasen till webbläsaren. Håller man tungan rätt i mun och kommer ihåg att sätta UTF-8 över allt så ska det inte vara något problem. Men nu fick jag alltså problemet ändå.

Jag startade ett omfattande felsökningsarbete där jag gick igenom hela kedjan från databasen och försäkrade mig att det på alla ställen stod UTF8. Men det löste inte problemet. Så jag började googla på det. Jag fick upp en del bra artiklar om problemet, men alla handlade uteslutande om att man råkat ha latin1 på ett ställe och UTF-8 på nåt annat ställe och hur man i sådana fall skulle kunna lösa problemet. En artikel som förtjänar ett hedersomnämnande är skrivet av hosting företaget Blue Box där de i detalj går igenom problemet och hur man löser det. En annan användbar källa verkar vara phpportalen där många har och har haft detta problem. Här finns en samlingstråd om detta problem. Och moderatorn marabou har skrivit en användbar checklista för vart problemet kan ligga. Men även artikeln från Blue Box och trådarna på phpportalen handlar främst om man att man råkat sätt latin1 på nåt ställe och UTF-8 på nåt annat ställe. Jag hade från början satt UTF-8 överallt och dubbelkollat att jag faktiskt gjort så.

En annan märklig grej var att åäö fungerande normalt på alla sidor förutom på en sida. Så jag började skriva ut åäö på olika sidor för att se var de fungerade och var de inte gjorde det. Denna godtyckliga strategi mynnade ut i att jag hittade problemet. Jag använde php-funktionen substr för att plocka ut en kortare del av kursnamnet och jag antar att substr inte har stöd för UTF-8, eller snarare för multibyte encoding. I php finns det en motsvarande funktion för substr som klarar av multibyte encodings. Den heter mb_substr. När jag använde denna funktion så löste det problemet.

Att det kan vara en php-funktion som inte klarar av multibyte encodings som är problemet är inget man tänker på direkt. Men det kan vara så och jag hoppas på att denna artikel besparar en del utvecklare en del huvudvärk.

Registrera klicks med OpenX

February 7th, 2010 | Posted by admin in Företagsamhet | Tips - (2 Comments)

Att få OpenX att registrera klick på flashbanners i en CPC-kampanj kan vara väldigt trixigt. Jag ska gå igenom två regler man kan hålla i minnet för att få det att fungera varje gång.

Regel nummer 1: Använd flashbanners som är skapade med Actionscript 2 (AS2). OpenX kan inte läsa av Actionscript 3-filer (AS3).

Det var några år sen AS3 lanserades, men ingen använde det för att skapa banners så AS2 är fortfarande standard för att skapa reklambanners. Jag antar att det är därför skaparna av OpenX inte har lagt in stöd för AS3. Men nu börjar det dyka upp en del banners som är skapade med AS3. Men dessa kommer alltså inte att fungera att räkna klick på i OpenX. Man får antingen bygga om dem med AS2 eller ersätta dem med bilder. Jag lärde mig detta efter några smärtsamma dagars efterforskningar kring varför klick på en klients flashbanners inte registrerades i OpenX. Förklarade detta sedan på deras forum och fick svaret av en av utvecklarna av OpenX att de skulle lägga in funktionen i framtida versioner av OpenX.

Regel nummer 2: Lägg in länken till landingpagen med clickTag.

OpenX kan registrera klicks på två sätt. Det första sättet är att man lägger in länken till landingpagen genom att hårdkoda in länken i flashfilen med Actionscript. OpenX kommer då leta efter geturl-funktionen och om den hittar sådana funktioner så kommer den presentera dem för dig så att du kan välja och vraka bland vilken länk eller vilka länkar det är som gäller. Sedan kommer OpenX tracka den eller de länkarna du väljer. Men det finns två nackdelar med denna metod. Det första är att det är inte säkert att OpenX kommer hitta några hårdkodade länkar även om de finns i filen. Detta kan till exempel hända om man i funktionen geturl inte anger någon target eller om man använder programmet Swish för att skapa flashanimationer. Den andra nackdelen är att man inte kan använda denna metod om flashfilen är placerad på en annan server än den där OpenX ligger (eftersom att OpenX måste modifiera flashfilen och det är inte möjligt om filen laddas in från en annan server varje gång).

Den andra metoden OpenX använder för att registrera klicks är genom variabeln clickTAG (eller clickTag som den heter i nyare versioner av Actionscript). Genom att lägga in clickTag-variabeln i sin Actionscriptkod så kan man ange länken till landingpagen i mjukvaran man använder (i detta fall OpenX). Fördelarna är att OpenX kan hitta clickTag varje gång (så länge man använder AS2!) och filen kan även ligga på en annan server. clickTag funkar i vilket fall som helst.

Så sammanfattningsvis. För att kunna registrera klicks i OpenX varje gång så ska du se till att bannern är skapad med AS2 och se även till att filen innehåller clickTag-variabeln. Hur du kan kan lägga in variabeln förklaras här.

Så då har vi äntligen lanserat vårt senaste projekt: MyRaceDriver.com.

Julien Gerbi är en ung och skicklig bilsportsförare som drömmer om att köra i de högsta serierna som till exempel Formel 1 och Nascar. Men bilsporter är i allmänhet dyra att utöva och de högsta serierna brukar vara reserverade för de som har råd. Så för att Julien ska kunna uppnå hans dröm så har han bestämt sig för att sälja ut andelar av hans karriär till vanliga människor. Läs mer på MyRaceDriver.com.

Det var ett mycket lärorikt projekt för mig eftersom att jag aldrig tidigare byggt ett WordPress tema från grunden. Det var faktiskt inte så svårt även om vissa moment var jobbigare än andra. Det verkar till exempel inte finnas ett vettigt kontaktformulärsplugin som man kan lägga in i sin php-kod. Contact Form 7 som jag tycker är den bästa som finns går bara att lägga in på page-sidor med template-kod. Så då blev jag tvungen att skriva egen kod som laddar in en page där templatekoden finns i footer.php.

När man vill ha ett forum till sin webbsida så är det smidigaste och vettigaste att välja tredjepartsmjukvara för forumet. Då vill man troligen också integrera forumets loggin-system och andra egenskaper med sin sida. Att integrera phpBB 3.0 är väldigt enkelt, trots att phpBB 3.0 inte har ett api.

Denna artikel på phpBB:s sida går igenom hur man enkelt integrerar phpBB sessioner med sin webbsida.