Program Design – 4 Introduktion til PHP
Dagens lektion Hvad er PHP? - og lidt historie Hvordan virker PHP? Grundlæggende PHP Variable Typer Løkker og Selektion Funktioner PHP i aktion Include Forms og URL parametre Cookies Sessions Filer
Web-klientWeb-server PHP Script Html-form Sender form data Kalder PHP fortolker Svar Web-browser WWW Svar Server-side afvikling af PHP scripts
PHP Historie ”Opfundet” af Rasmus Lerdorf i 1994 Udviklet for at han kunne følge/overvåge besøgende på sit web- site PHP er et ”open-source” produkt PHP var en forkortelse for ”Personal Home Page”, nu er det ”PHP: Hypertext Preprocessor” PHP brugs til form håndtering, fil håndtering og database adgang
Fortolkning af PHP scripts PHP processor PHP dokument HTML dokument InputOutput PHP dokumentet indeholder HTML elementer med indlejrede PHP script(s) HTML elementer kopieres blot til output filen PHP scripts fortolkes og kan producere output som sendes til output filen
PHP indlejres i HTML PHP scripts kan frit indlejres i HTML dokumenter <?php … ?> PHP dokumenter har fil-extension:.php
Eksemple: <!DOCTYPE html PUBLIC "-//w3c//DTD XHTML 1.0 Strict//EN" " idag.php <?php print " Vores første PHP dokument "; print "Idag er : "; print date("l, F jS"); print " "; ?> Copy-mode Interpret-mode (fortolker-mode) Copy-mode Link
Output print print ” Vores første PHP dokument ”; echo echo ” Vores første PHP dokument ”; echo ” Vores første”, ” PHP dokument ”,”…”; printf $pris = 9.95; printf(” %4.2f”,$pris); - giver 9.95 Link
Sproget - PHP De grundlæggende concepter i PHP som data typer, løkker...
Erklæring af variabler Alle variabel navne starter med $ Variable erklæres når de bruges Erklæringer behøver ingen type angivelse $minVariabel = 0; $minVariabel = ”en tekst streng”; $minVariabel = $en_anden_variabel; Link
Data Typer - Tal Heltal (integer) – 7, 8, -1, Reelle tal (double) 7.2, -7.5, 7e12 $etTal = 8; $etAndetTal = 17 + $etTal;
Typer - boolske værdier En boolsk værdi er enten TRUE, eller FALSE $enBool = FALSE; $enAndenBool = TRUE; $enBool = 7==5; - giver false $enBool = 7>5; - giver true
Typer – Tekst En string er en række af tegn omgivet af ” eller ’ ’ (single quoted) – variable og escape-sekvenser bliver ikke ”udvidet” ” (double quoted) - variable og escape-sekvenser bliver ”udvidet” $etTal = 42; ’Tallet er $etTal’ – giver: Tallet er $etTal ”Tallet er $etTal” – giver: Tallet er 42 ”Tallet er \$etTal” – giver: Tallet er $etTal Link
Typer – Tekst (2) Sammensætning $navn = ”Florian”. ” ”. ”Pilz”; – giver: Florian Pilz Bogstavindeks $str = ”Florian Pilz”; print $str{3} ; – giver r Link
Special tegn \nlinefeed \rcarriage return \thorizontal tab \\backslash \$dollar sign \"double-quote “line med \n linieskift og en backslash \\”
Løkker $a = 0; while ($a<10) { $a = $a + 1; print $a. ” ”; } for ($a=0; $a<10; $a++) { print $a. ” ”; } Link While- og for-løkker har samme syntaks (og semantik) som i JavaScript
Selektion if (a==5) { … } else { … } if og sammenligning fungere på næsten samme vis som i JavaScript if (a==5) { … } elseif (a>7) { … } sammenligninger eksempel på if
Erklæring af Funktioner (1) Funktioner defineres på samme vis som i JavaScript function navn(parameter,…) { kommando; …; return værdi; }
Erklæring af Funktioner (1) function udregn($tal1, $tal2) { return $tal1 + $tal2; } function printBool ($b) { if ($b==TRUE) print ”TRUE”; else print “FALSE”; } Link
Scope En variabel som bruges i en funktion er lokal i funktionen function udregn($tal1,$tal2) { $resultat = $tal1 + $tal2; return $resultat; } $resultat = 17; $svar = udregn(1,5); print (”Efter udregn(1,5) er kaldt er \$resultat: $resultat ”); print (”og \$svar er $svar”); En funktion skal opfører sig på samme måde uanset fra hvilken kontekst den kaldes $resultat’s levetid start $resultat’s levetid slut Link
PHP i aktion Konkret anvendelse af PHP
Hvordan ved jeg om en webserver understøtter PHP? Lav en tom php fil, kald følgende funktion: <? php phpinfo(); ?> Personlige og gruppe hjemmesider understøtter PHP.
Include (1) Eksterne PHP dokumenter kan indlejres: include (”mitScript.inc”); Filen mitScript.inc kan både indeholde PHP scripts og HTML. Hvis filen indeholder PHP, skal det placeres i , også selv om include allerede er i Link
Include (2) <?php include “mitscript.inc”; head(“En titel”); ?> Det bliver nemt at lave ændringer som har global effekt på et web-site Man kan gruppere bestemt funktionalitet i en include-fil Eksempelvis samle database tilgang Ved hjælp af funktioner som tager parametre kan man lave ”variable” abstraktioner Link
Forms og PHP (1) PHP laver en variabel for hvert form element med samme navn som elementet, men det kan være lidt tricky: Link
Forms og PHP (2) Import Request Variables import_request_variables(gp,””); Form værdi samlinger $_POST[”forfatter”], eller $_GET[”forfatter”] Konfigurere server (register_globals) Link
URL parametre Generel form url?variabel1=værdi&variabel2=værdi&... … import_request_variables(g,””); echo ’Variablen er ’. $enVar; Link
Cookies En cookie er et stykke tekst som en web-server kan gemme på en brugers hard disk Cookies giver et web-site mulighed for at gemme information på brugerens computer som senere kan hentes Cookies indeholder par af navne og værdier Men, ofte bruges cookies kun til at holde en information – unikt bruger id
Cookies (2) En klient beder om en web-side, f.eks. Browseren tjekker om der ligger en cookie fra på computeren – hvis der gør sender browseren cookie afsted sammen med forespørgelsen modtager både forespørgelse og cookie ”Web-site’et” kan frit ændre i cookies
Cookies (3) setcookie ( navn, - navnet på cookien værdi, - en tekststreng expire, - sekunder siden 1/ path, - cookie for dele af et website domain, - cookie for subdomæner secure – skal der bruges en sikker forbindelse ); Skal kaldes inden output genereres
Cookies (4) $ value = ’Noget tekst som er proppet i en cookie i dag – ’. date(”l dS of F Y h:i:s A”); setcookie(”mincookie”, $value, time()+3600); getcookiesetcookie import_request_variables(c,””); print $mincookie; Eller, $cookie = $_COOKIE[”mincookie"];
Sessions (1) Sessions er et alternativ til cookies Når en bruger besøger et web-site tildeles denne et unikt id, kaldet et session id Session id’et gemmens enten i en cookie eller sendes rundt på web-site’et som URL parameter Vilkårlige variable kan registres i en session
Sessions (2) Før noget output genereres session_start(); For at registrere en variabel $_SESSION[’variabel_navn’] = værdi; For at tjekke om en variabel er registreret isset($_SESSION[’variabel_navn’]); Link
Sessions (3) Hvis cookies ikke er tilladte bruges konstanten SID – er tom hvis cookies ’virker’ if (SID!=0) echo ’.. ’; else echo ’.. ’; Hvis man vil se session id session_id(); Link
Filer (1) Åbning af en fil $fil = fopen(”sti_til_fil”, ”mode”); mode skriv og læs fra slutning’a+’ skriv fra slutning’a’ skriv og læs fra start’w+’ skriv til start’w’ læs og skriv fra start’r+’ læs fra start’r’
Filer (2) Læse $fil = fopen(”data.txt”, ”r”) or die(”Kunne ikke finde filen!”); $str_fra_fil = fread($fil, filesize(”data.txt”)); Skrive $fil = fopen(”data.txt”, ”a”) or die(”Kunne ikke finde filen!”); fwrite($fil, ”noget tekst”)); Link
Hvad har jeg undladt? Arrays En særdeles fleksibel datastruktur i PHP Kræver i sig selv en hel forelæsning :-( Pattern matching Regulære udtryk
Dagens emner Hvad er PHP? Og lidt historie Hvordan virker PHP? Grundlæggende PHP Variable Typer Løkker og Selektion Funktioner PHP i aktion Include Forms og URL parametre Cookies Sessions Filer
Opgaver Overvej hvordan man kan udarbejde et spørgeskema til jeres projekt vha. PHP. Her er det en idet at gemme resultatet for den enkelte bruger i en fil.