Dynamiske websider

10 februar 2015

Websider som bare er basert på html-kode er såkalt statiske sider. Det betyr ikkje at det ikkje kan vera animasjonar og bevegelse på siden, men at sjølve html-koden er statisk. Med andre ord: kvar gong du er ber om å få denne sida opp i nettlesaren din, så får du nøyaktig same html-kode levert frå nettserveren. Dette fungerer bra om du har ein nettstad som har få sider eller om innhaldet skjelden endrar seg. Men dei fleste store nettstader endrar seg ofte og har mange brukarar som kan legga inn innhald. Slike nettstader er som regel basert på ein database. For eksempel vil ein blogg kanskje lista opp alle innlegg som fins i databasen akkurat når du ber om sida, og dermed vil det du får opp på skjermen forandra seg kvar gong det blir lagt inn nye innlegg. For å få til dette er vi avhengig av at webserveren (apache eller tilsvarande) kan kjøra såkalte server-side script. Dette er program som blir kjørt på web-serveren som kan "snakka" med ein database som feks. mysql. Skjematisk kan vi framstilla det slik:


Når du sit på PCen din og skriv inn ein URL i adressefeltet(eller trykkjer på ei lenke) så blir denne forspørselen sendt til ein webserver ein eller annan stad i universet. Hvis forespørselen gjeld ei statisk nettside som er lagra på serveren, så blir den bare henta og sendt tilbake til din maskin, og så (evt etter å ha henta inn bilder og andre element) dukkar den opp på skjermen din. Men hvis det er ei dynamisk nettside så må serveren først kjøra (tolka) koden og ofte gjera kall til ein database. Deretter lagar serveren html-kode som så blir sendt til nettlesaren din. Ei dynamisk nettside inneheld altså programkode skrive i eit skripstspråk som serveren forstår. I det følgande antar vi at det er PHP, men det fins mange alternativ, som ASP, Perl osv.

For dynamiske nettsider fins det ingen HTML-dokument som kan sendast, men derimot eit PHP-dokument som må tolkast. Eit PHP dokument kan innehalda både PHP-kode og vanlig hmtl-kode. Når den støter på rein html-kode blir denne bare sendt vidare til nettlesaren din uten vidare prosessering. Html-koden er tagga på vanlig måte, og hvis dokumentet bare inneheld HTML, så blir resultatet det samme som om det var eit HTML-dokument. Hvis det derimot inneheld PHP-kode, så kan mykje rart skje. PHP-kode startar alltid med <?php og sluttar med ?>. Når webserveren støter på PHP-kode blir den tolka og utført som eit program. Dette programmet kan evt generera meir html-kode som også blir sendt til nettlesaren. Dette skjer ved at programmet skriv ut tekst. Det kan feks. sjå slik ut:



        <HTML>
          <HEAD>
		  <meta charset="UTF-8">
          <TITLE>Mitt første PHP-dokument</TITLE> 
		  </HEAD>
          <BODY>
			<h1>Mitt første PHP-dokument</h1>
			<?php 
			$tal = 22249090;
			echo "<p> Talet er: $tal </p>";
			?>
          </BODY>
        </HTML>

Resultatet av dette er at følgande HTML-kode blir sendt til nettlesaren:


        <HTML>
          <HEAD>
		  <meta charset="UTF-8">
          <TITLE>Mitt første PHP-dokument</TITLE> 
		  </HEAD>
          <BODY>
			<h1>Mitt første PHP-dokument</h1>
			<p> Talet er: 22249090 </p>
          </BODY>
        </HTML>

Som vi ser: det einaste som har skjedd er at PHP-programmet har oppretta variabelen $tal som har fått verdien 22249090. Så har det skrive ut linja "Talet er: 22249090" vha. funksjonen "echo". Alt som blir skrive ut, havnar i HTML-koden. Evt andre ting som skjer, i form av beregningar etc. ser vi ingenting igjen av. Det vi ser, er nemlig det nettlesaren viser oss, som kun er basert på koden den mottar. I dette tilfellet viser den bare overskriften "Mitt første PHP-dokument", samt linja "Talet er 22249090". For å forstå ordentlig kva som skjer, er det altså nyttig å samanlikna koden i php-fila med det du får ut som html (Det kan du sjå ved å bruka "vis sidekilde" eller tilsvarande i nettlesaren din), og tilslutt evt. sjå korleis dette ser ut på skjermen.

Kommunikasjon med database

Men dette var jo ikkje rare dynamikken, for vi hadde ikkje trengt å bruka PHP for å få til dette. Men hvis vi tenkjer oss at variabelen $tal ikkje blir sett inne i programmet, men derimot blir henta frå ein database, så begynner vi å forstå nytten av dette. Vi kunne feks. ha ein kundedatabase med oversikt over navn og telfonnr. I såfall kunne talet vårt vera telefonnummeret til kunden "regjeringen" i vår database. For å få det til, måtte programmet vårt innehalda kode for oppkobling mot databasen, og så måtte vi ha sendt ei SQL-spørring til databasen, som tilslutt var tatt imot og lagt inn i $tal. Dette kan du lesa meir om her: Meir om PHP.