qualitum logo
Programmera i webbmiljö
Jag nämnde i inledningen att HTML kanske inte alltid räcker till. Här kommer jag att utveckla det resonemanget, varför behöver vi PHP? Räcker det inte med HTML? Jag kommer också lite kort beskriva tekniker som liknar PHP och vilka fördelar samt nackdelar de har. Detta kapitel går inte in på PHP i sig utan mer på den miljö som PHP arbetar i. Det som står i detta kapitel är därför gemensamt för alla tekniker på serversidan.

När HTML inte räcker till

För att presentera statisk information rätt upp och ner räcker HTML till gott och väl. Det är till och med att föredra då PHP-sidor tenderar att bli något långsammare än rena HTML-sidor. Förr var webben till största delen statisk, HTML-designers skrev ihop webbsidor antingen för hand eller i en HTML-redigerare och publicerade sedan dessa. Där låg sedan informationen orörd tills det blev dags att uppdatera den, då laddades filen hem, redigerades återigen för hand eller via HTML-redigeraren och laddades sedan upp igen. När innehållet var statiskt fungerade detta utmärkt. Men de senaste åren har webben mer och mer gått mot ett dynamiskt innehåll (som ju egentligen är webbens styrka). Då krävs någonting nytt och det är här som tekniker på serversidan, exempelvis PHP kommer till sin rätt. Nu hämtas informationen från databaser och liknande för att direkt presenteras på webbplatsen. Det finns inget behov av att gång på gång redigera statiska HTML-dokument då du kan manipulera databasen som du hämtar information ifrån.

Extremt viktigt är också att inse att PHP inte gör någonting utan HTML. I webbsammanhang fungerar PHP så att det på ett eller annat sätt genereras HTML-kod. Du kan omöjligen skapa en HTML-sida enbart med hjälp av PHP, du skriver ut HTML-kod med PHP! Anledningen till att jag tar upp detta och pekar på det så tydligt är att man på forum runt om ofta ser frågan "Kan man använda JavaScript tillsammans med PHP"? Detta hör mycket ihop med den grundläggande förståelsen om vad PHP är. Givetvis kan du det, låt bara PHP-koden generera JavaScriptet. Du kan dock inte besluta vilken PHP-kod som skall köras utifrån olika händelser i ditt JavaScript, följande är alltså fel:


PHP:
1:
<HTML>
2:
<HEAD><TITLE>Ett exempel</TITLE>
3:
<SCRIPT language="Javascript">
4:
 
5:
function besluta( )
6:
{
7:
 
8:
    if ( villkor ) {
9:
        <?php
10:
            echo "Hej på dig";
11:
        ?> 
12:
    } else {
13:
        <?php
14:
            echo "Hej då, välkommen åter"
15:
        ?>
16:
    }
17:
 
18:
}
19:
 
20:
</HEAD>
21:
 
22:
<BODY onload="javascript:besluta();">
23:
</BODY>
24:
</HTML>
25:
 


Eftersom PHP-koden exekveras på servern och JavaScriptet först i klientens webbläsare kommer detta inte att fungera som tänkt. Resultatet i din webbläsare blir:

PHP:
1:
 <HTML>
2:
<HEAD><TITLE>Ett exempel</TITLE></HEAD>
3:
<SCRIPT language="Javascript">
4:
 
5:
function besluta( )
6:
{
7:
 
8:
   if ( villkor ) {
9:
Hej på dig
10:
      }
11:
   } else {
12:
Hej dåvälkommen åter 
13:
      }
14:
   }
15:
}
16:
 
17:
</HEAD>
18:
 
19:
<BODY onload="javascript:besluta();">
20:
</BODY>
21:
</HTML>
22:
 


Detta var förmodligen inte intentionen. Vi kommer att gå in på PHP-syntaxen i detalj senare, detta var enbart för att demonstrera skillnaden mellan tekniker som jobbar på klientsidan och tekniker som jobbar på serversidan. Nedan fortsätter jag diskussionen genom att schematiskt ta en titt på vad som händer.

Vad händer med HTML-sidan?

När du efterfrågar (besöker) en HTML-sida händer följande, sett ut serverns perspektiv.

  • Servern läser av anropet från din webbläsare.
  • Servern letar upp efterfrågad fil på sitt filsystem.
  • Servern skickar denna till din webbläsare som sedan tolkar och visar sidan för dig.

Det sägs ju att en bild säger mer än tusen ord, därför har jag försökt illustrera vad som händer:



Vad händer med PHP-sidan?

Skillnaden mellan PHP/HTML och ren HTML är att kod exekveras på servern. Detta lägger till ett steg i serverns arbete. Detta händer när du efterfrågar en PHP-sida, sett ut serverns perspektiv:

  • Servern läser av anropet från din webbläsare.
  • Servern letar upp efterfrågad fil på sitt filsystem.
  • Servern exekverar PHP-koden i denna fil.
  • Servern skickar den resulterande HTML-koden tillbaka till webbläsaren som sedan tolkar och visar sidan för dig.



Förhoppningsvis kan du från dessa två bilder utläsa att det för dig som klient inte är någon skillnad på att besöka en HTML eller PHP-sida. Det du får tillbaka i båda fallen är HTML-kod som din webbläsare tolkar och uppvisar.

Dynamiskt innehåll genom åren

Under åren som webben funnits har flera tekniker utvecklats för och göra den mer interaktiv och dynamisk. Vissa av dem har slagit igenom och används än idag men det stora flertalet slog aldrig på bred front och har sedan fallit i glömska, de flesta av dem kommer jag inte heller nämna här. Men några av dem kommer vi att ta upp och ge en mycket kort förklaring till. Gör dig redo för en kringvandring i djungeln av webbtekniker.

Klienttekniker

Hittills har vi endast talat om teknik på serversidan, dynamiskt innehåll kan till viss del skapas även på klientsidan. Här går vi igenom de vanligaste teknikerna för detta:

  • ActiveX kontroller
    Skapas med hjälp av t ex C++ eller Visual Basic. Nackdelen med dessa är att de utvecklats av Microsoft och därför inte stöds lika bra i Netscape/Mozilla. De går dock och köra där med hjälp av plugins. ActiveX kontrollen laddas alltså ner i webbläsaren och körs där (vilket är principen för alla klienttekniker).

  • Skriptspråk och dynamisk HTML
    Vanligast är skriptspråket JavaScript som används tillsammans med lager för att ge ett dynamiskt innehåll.
    Med denna dynamik menas främst att du kan placera ditt innehåll exakt i Y och X led, påverka färg, form och liknande. Du kan alltså flytta runt lager på sidan, skapa bildspel osv.

  • Java-Applets
    Fungerar på ett liknande sätt som JavaScript. Du kan förändra, flytta och manipulera data hos klienten. Java-Applets bygger dock på programmeringsspråket Java och är därför kraftfullare än JavaScript.

Servertekniker

Nu kommer vi in på de tekniker som liknar PHP mest, de som baseras på servern. De gör sitt jobb där och skickar den behandlade informationen till klienten i form av HTML, JavaScript, bilder eller vad det nu kan vara.

  • Common Gateway Interface (CGI)
    Är inget egentligt språk utan ett gränssnitt för kommunikation mellan webbservern och ett skript eller programmeringsspråk. Vanligast är att man använder Perl men C/C++ används också. CGI fungerar på följande sätt

    1. Servern får webbläsarens HTTP-förfrågan.

    2. Servern vänder sig till CGI-gränssnittet och efterfrågar den utdata som webbläsaren begärt.

    3. CGI startar upp en process för anropet, kör det skript som efterfrågats och skickar informationen tillbaka till CGI-gränssnittet.

    4. CGI-gränssnittet skickar informationen till webbserver som vidarebefordrar den till klienten.
    Nackdelen med detta är att en ny process startas på webbservern för varje anrop. Detta innebär att 100 besökare suger dubbelt så mycket kraft av servern som 50 skulle göra. Du kan likna en process vid att starta upp vilket program som helst. Skall du samtidigt redigera två wordfiler behöver du inte starta Word två gånger utan de båda dokumenten kan redigeras i samma "körning" av Word. Så fungerar dock inte CGI. Här behöver du starta upp "Word" (om vi nu skall ta det exemplet) en gång för varje dokument (i webbserverns fall HTTP förfrågan) vilket givetvis är mycket ineffektivt.
    Nu har man i och för sig arbetat bort detta med lösningar som FastCGI och mod_perl (en modul till Apache). FastCGI låter flera skript dela på samma process och mod_perl tolkar Perl-kod direkt via Apache (vilket egentligen bygger bort CGI). CGI har ändå ett rykte om sig och vara långsamt!

  • Active Server Pages (ASP)
    Microsofts inlägg i debatten, har länge varit större än PHP, ett förhållande som nyligen skiftat då PHP gick om ASP i popularitet. Inte heller ASP är något eget språk som PHP utan ett gränssnitt. ASP kan skrivas med hjälp av t.ex. Jscript (Microsofts version av JavaScript) eller VB-script, klart vanligast är det senare alternativet.
    ASP är mycket likt PHP vad det gäller funktionalitet men en nackdel som det har är dess plattformsberoende. Microsoft står som bekant bakom ASP och gränssnittet fungerar därför föga förvånande bäst på IIS (Internet Information Server) som är Microsofts stora webbserver på marknaden. ASP har därför alltid varit svårt att köra på Unix/Linux men på senare tid har program som ChiliASP kommit, det låter dig skriva ASP-sidor och köra dem under just Unix/Linux.

  • Java Servlets och Java Server Pages (JSP)
    Ytterligare en likvärdig teknik till PHP och ASP. Dessa webbsidor kan innehålla en blandning av HTML, Java-kod och Javabönor (JavaBeans). Java med sitt plattformsoberoende borde ju passa perfekt för webben. Det gör det också men tröskeln är ganska så hög, Java är ett svårare språk och lära sig än t.ex. PHP.

  • PHP
    En av de senaste teknikerna som arbetar på serversidan. PHP utvecklades ursprungligen av Rasmus Lerdorf 1994. Han kallade det till en början "Personal Home Page Tools" och det var inte mer än en samling skript för att hantera olika situationer som kunde uppstå på en webbsida. Själv använde han det för att följa och räkna besökarna på sin webbplats. Version 2 av språket kom 1997, men det riktiga lyftet kom först 1998 då version 3 av språket släpptes. Vid denna tid var det inte längre hans personliga projekt utan han hade fått förstärkning av Zeev Suraski och Andi Gutmans som gjort en total genomarbetning och skrivit en ny tolk (parser) till den nya versionen. Det var också dessa två programmerare som senare förstod att PHP behövde byggas om från grunden ytterligare en gång, det gav upphov till version 4 som vi idag är inne på.
Kapitel 2 av 8
[ 1 2 3 4 5 6 7 8 ]
Välkommen Anonymous
Logga in
Registrera
Snabblänkar
Markera alla forum som lästa
Skriptarkivet [86 av 97]
Visa nya inlägg
Visa dina inlägg
Visa obesvarade huvudinlägg
Läs vår skola
  Introduktion
  Programmera i webbmiljö
  Installationen i Windows
  Variabler och konstanter
  Vektorer
  Operatorer
  Villkorssatser
  Slingor
Statistik
Registrerade medlemmar: 19387
Inlägg totalt: 715705
Senaste medlem: lejon74
Online
Besökare just nu: 16,
0 registrerade,
0 dolda och
16 gäster
Besökare som mest var 337 den 2007-07-16 20:05

Våra medlemmar
Inloggade medlemmar
Bra att veta
Förhållningsregler
Trivselregler
phpBB-FAQ
För dig som vill länka
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic
qualitum logo