Webprogrammering Med PHP - Intro

Set ovenfra er Web'et ret enkelt. web'et består af resurser - dokumenter, billeder, osv. - placeret på servere. Resurser har en adresse, hvormed en klient - fx en browser - henter resurser fra forskellige servere rundt om i verden.

En typisk interaktion på web'et ser ud på følgende måde: en bruger forespøger via sin browser en side fra en server, serveren finder siden og sender det tilbage til brugerens browser, og til sidst viser browseren dokumentet. Bemærk at browseren gentager denne procedure for alle resurser, der er inkluderet i HTML siden, det kunne fx være billeder, videoer eller en CSS fil.

I de fleste moderne webapplikationer gør serveren en hel del mere, end blot returnere indholdet af filer på serveren til klienten. Typisk sammensætter serveren et HTML dokument, idet brugeren forspørger det. Det er her webprogrammering kommer ind. Webprogrammering gør os i stand til at erstatte statiske HTML filer med dynamisk genererede HTML sider.

Lad os kigge på et eksempel fra bloggen. Hvis du forespørger siden http://skyen.iftek.dk/~jakob/blog/post.php?id=1, sker der en række
ting på server siden:

1. Webserveren modtager en forespørgslen.
2. Webserveren kalder et PHP script, nemlig post.php.
3. PHP scriptet henter data for blog indlægget med id 1 fra databasen.
4. PHP scriptet sætter herefter data ind i en HTML skabalon.
5. HTMLen returneres til web serveren, der igen returnerer til din browser, som kan vise indholdet.

URLer

URLer er en central komponent for web'et. Det følgende afsnit beskriver, hvad en URL er og dens bestanddele.

En URL er en addresse for en resurse. Uden denne er det ikke muligt at hente resursen. Lad os kigge på URLen fra før:
http://skyen.iftek.dk/~jakob/blog/post.php?id=1. Denne URL er til et blog indlæg. Den består af fire forskellige dele.

1. En protokol (http),
2. Et domæne (skyen.iftek.dk),
3. En sti til PHP scriptet (/~jakob/blog/post.php); og
4. Input til PHP scriptet (id=50).

Input'et til PHP scriptet, altså id=50, kaldes også for en query streng.

Query strenge

Stort set alle webapplikationer benytter query strenge. Query strenge er et middel til at give input til PHP. Der kan være en eller flere query variable i en query streng. Fælles for dem er, at den første query variabel altid skal defineres efter et ? i URLen. Hvis der er flere query variable, adskilles de med et &. Det kunne fx være ?week=29&year=2013. I denne query streng, er den første query variabel week. Værdien af variablen definerer hvilken uge, der der vises nyheder fra, og den anden variabel year angiver hvilket år, der vises nyheder fra.

Her er et par URLer, der har query strenge:

Webprogrammering med PHP

PHP er et programmeringssprog, som er designet til webudvikling. Derfor er de fleste ting i forbindelse med webprogrammering ret lige til i PHP. Indtil videre har vi kigget på web'et og URLer. Det følgende afsnit beskriver, hvordan du i PHP arbejder med URLer. Senere i forløbet kommer vi ind på, hvordan PHP spiller sammen med databasen, og hvordan PHP renderer HTML skabaloner; med andre ord, hvordan PHP interagerer med hhv. datalaget og præsentationslaget.

Vi viser i det følgende hvordan titlen for et konkret blog indlæg skrives ud vha. PHP. Forestil dig at dette sker ved at tilgå URLen http://skyen.iftek.dk/~jakob/blog/post_title.php?id=1. Denne URL indeholder query variablen id. Lad os kigge på hvordan id kan udnyttes.

<?php
 
require_once("db.php");
 
$id = $_GET['id'];
$sql = "SELECT * FROM posts WHERE id = ?";
$post = db_query_get($sql, array($id));
 
echo($post['title']);
?>

Den første linje med require_once inkluderer hjælpemetoder til at interagere med databasen. Læg derefter mærke til udtrykket:

$id = $_GET['id'];

Denne PHP kode henter værdien af query variablen id ud af query strengen ved hjælp af $_GET. $_GET er en speciel datastruktur i PHP, og den indeholder altid værdierne fra query strengen i URLen.

Næste linje indeholder SQL udtrykket til at hente et blog-indlæg med et bestemt id. I burde kunne genkende SQL udtrykket, bortset fra at det indeholder et ?. Vi kommer tilbage til, hvorfor ? er smart næste gang, nu skal du blot tænke det som en krog, hvorpå der hænges data.

Herefter eksekveres SQL-udtrykket mod databasen, med værdien af $id hængt på krogen og resultatet gemmes i variablen $post. Til sidst skrives blog indlæggets titel ud.

Medmindre andet er angivet, er indholdet af denne side licenseret under Creative Commons Attribution-NonCommercial 3.0 License