Webbprogrammering Introduktion till PHP 1
Hur fungerar PHP PHP betyder PHP Hypertext Processor Tillhandahåller server-side scripting Är ett interpreterande språk Du skriver ett antal uttryck Webbservern ger dessa uttryck till en PHP tolk Tolken exekverar dessa uttryck rad för rad Hittar den ett fel avbryter den direkt Kompilerande språk är annorlunda. De läser hela programmet före de kan exekvera det 2
Intro till PHP PHP skapades av en samling Perl-skript skapade 1994 av Rasmus Lerdorf. När denna samling distribuerades kallades paketet för: Personal Home Page (PHP) Syntaxen ändrades för att likna C och Java Fram till 1999 användes PHP i ganska liten utsträckning i skuggan av ASP Januari 2000: 1 miljon webbservrar December 2000: 5 miljoner webbservrar Den snabba ökningen har bara fortsatt PHP levereras som öppen källkod 3
Apache och PHP När en fil har ändelsen.php, skickas den inte till klienten Som är det som händer när filen heter.html Istället läser Apache filen, och om den hittar PHP-delar i filen skickas dessa till PHP-tolken Denna tolk är en modul som finns i webbservern Apache 4
Webbservrar med stöd för PHP Den i särklass vanligaste servern PHP används med är Apache, som också är den server som dominerar i användning på Internet. Apache används på c:a 2/3 av webbservrarna. Vanligast används Apache på antingen Linux- eller UNIX-maskiner, men det går det att använda PHP med i stort sett alla webbservrar i bruk. Apache (Linux/Unix/Windows/Mac) MS Internet Information Server (Windows) Netscape IPlanet Roxen Alla andra servrar med stöd för CGI 5
Marknadsandelar 6
Inbyggd funktionalitet i PHP En stor fördel med PHP är den enorma mängden inbyggd funktionalitet som finns i språket. PHP har det mesta man kan tänkas behöva för att bygga dynamiska webbplatser, bland annat: LDAP - söka i kataloger IMAP (POP, NNTP) - Åtkomst av e-post-servrar FTP - Hämtning av filer via FTP BC - Avancerade matematik funktioner XML - Standardiserat märkspråk för dokumentutbyte PDF - skapa Acrobat PDF dokument SWF (Flash) - Skapa Flash-animationer MCRYPT - Teknik för kryptering av känslig information Cybercash - Ett av de betalningssystem PHP stödjer 7
Att använda PHP Ni kommer genom kursen att använda er webbplats på servern webbkurs.ei.hv.se eller någon annan (som Binero) Till skillnad från HTML måste man ha en webbserver för att använda PHP Därför att en webbläsare ej innehåller någon PHP-tolk Ett alternativ kan vara att installera en lokal webbserver på din dator Jag använder ofta XAMPP. Laddas hem från: http://www.apachefriends.org/en/xampp.html 8
XAMPP är ett program för flera plattformar innehållande: Apache webbserver PHP MySQL databas PhpMyAdmin Filezilla FTP server OpenSSL Perl Webalizer Mercury webmail Allt i en 45Mb stor installationsfil J 9
Första PHP-skriptet Skriv nedanstående i en fil och spara den som hello.php Med XAMPP (windows): spara den som c:\xampp \htdocs\webbprogrammering\hello.php Var noga med att verkligen blir raka!!! Surfa sedan till: http://localhost/webbprogrammering/hello.php <?php echo Hello World! ;?> hello.php 10
Andra PHP-skriptet Skapa en ny fil, kalla den för info.php med nedanstående innehåll. Surfa till http://localhost/webbprogrammering/info.php En hel webbsida skapas åt dig. Titta noga igenom alla variabler! info.php <?php phpinfo ();?> 11
Magin med PHP En klient kan aldrig se PHP-kod. Den ser bara det som PHP-tolken har gjort med koden Du kan i en PHP-fil skriva HTML-kod, och när du önskar byta till PHP i samma fil Filen kan ha flera HTML och PHP-delar 12
Formulärhantering med PHP Ett vanligt användningsområde för PHP är bearbetning av data inskriven i ett formulär. För detta behöver vi två filer: En HTML-fil med formuläret En PHP-fil som behandlar formulärdatan Vi skapar våra två filer för detta på nästkommande sidor 13
HTML-filen <html> <form action="test2.php" method="post"> Namn: <input type="text" name="namn"> <br> Tele: <input type="text" name="tele"> <br> <input type="submit" value="skicka"> </form> </html> test2.html 14
PHP-filen <?php $namn = $_POST['namn']; $tele = $_POST['tele']; echo "Du heter $namn och har telefonnummer $tele <br>"; echo "Du heter ". $namn. " och har telefonnummer ". $tele. "<br>";?> test2.php 15
Resultatet 16
Men lite formatering av text då? Om vi vill ha ett visst utseende på resultatsidan görs detta i vanlig ordning med lite CSS Min fil stil.css ser ut enligt nedan body { color: #fd5; background-color: #22c; font: 1em Verdana; } stil.css 17
Min nya PHP-fil <?php $namn = $_POST['namn']; $tele = $_POST['tele']; echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"stil.css\">"; echo "Du heter <b>". $namn. "</b> och har telefonnummer <i>". $tele. "</i><br>";?> test2b.php 18
Resultatet 19
Variabler En behållare för ett värde Identifieras med ett dollartecken ($) Använd inte specialtecken som namn Använd bara a-z, A-Z, 0-9, _ Undvik å,ä,ö Case-sensitive $antal, $ANTAL, $Antal är alla olika variabler Använd namn som lätt påminner om variabelns syfte $antalbesokare, $datafil, $efternamn 20
Datatyper I PHP finns tre grundläggande datatyper Integer Används för att representera ett heltal. Man allokerar 4 bytes i minnet -2 till +2 miljader $antal = 123; $antal = -42; // Vanligt tal // Negativt tal Prefixet -, 0 och 0x visar vilket sorts tal det är 21
Datatyper Double Används för att representera reella tal (flyttal) Innehåller decimaler eller exponenter Maximalt 1.8 308 $antal = 6.14; // Tal med decimaler $antal = 0.0614e2; // Tal med exponent 22
Forts String Används för att representera ickenumeriska värden som bokstäver och ord $namn = Bertil Nilsson ; // Vanlig text $antal = 42 ; // Lagras som två tecken $antal = 42; // Lagras som en integer Det är citationstecknen som visar att det är en sträng. Man måste använda citationstecken om strängen innehåller mellanslag! $namn = Bertil; // Fungerar $antal = Bertil Nilsson; // Fungerar inte! 23
Andra datatyper Utöver dessa tre vanliga typer finns även: Array (vektorer) Lagra flera värden. Object Kan innehålla andra datatyper eller funktioner Bool Lagrar TRUE eller FALSE Null Indikerar att datatypen är tom Resource Speciell data, exempelvis $db=mysql_connect(); 24
Skriva ut variabler <?php $namn = "Anna Bertilsson"; //String $alder = 29; // Integer $langd = 1.74; // Double echo "Namn: $namn <br>"; echo "Ålder: $alder <br>"; echo "Längd: $langd <br>"; test3.php?> 25
Escapesekvenser Används för att skriva ut specialtecken och för att komma runt problem med utskrift av $ ' osv... \' Apostrof \ Citationstecken \\ Backslash \$ Dollartecken \n Ny rad \t Tab 26
Villkorssatser Hittills har alla PHP-program körts igenom rad för rad oberoende av vad användaren matat in. För att ändra detta behövs styrstrukturer I PHP skrivs dessa på samma sätt som alla högnivåspråk, och de varianter som finns är: If-satsen If-else If-else if-else Switch-satsen 27
Exempel på en if-sats <?php $alder = 39; // Gör en jämförelse mellan innehållet // i variabeln $alder och talet 65. // Värderas detta till sant utförs "blocket" if ($alder > 65) { echo "Du är pensionär."; } else { echo "Du är fortfarande ung."; } test4.php?> 28
Resultatet 29
Mer exempel på en if-sats <?php echo "<link rel=\"stylesheet\" type=\"text/css\" \"stil.css\">"; href= test4.php // Funktionen date hanterar tid // Indatan D innebär att date returnerar // det engelska namnet på dagen $namn_pa_dagen = date(d); if ($namn_pa_dagen == "Sat" or $namn_pa_dagen == "Sun") echo "Det är helg!"; else echo "Det är vardag";?> 30
Resultatet 31
Switch-satsen En if-else if-else sats kan bli väldigt lång om det finns många alternativ att välja på, exempelvis i en meny. Då kan switch-satsen underlätta. Syntax: switch(variabel) { case alternativ : action; break ; case alternativ : action; break ; default : action; break; } 32
HTML-filen <html> <link rel="stylesheet" type="text/css" href="stil.css"> <h1>exempel</h1> <form> <select name="val"> <option value="g">glad <option value="l">ledsen <option value="s">sur </select> <br> <input type="submit" value="skicka data"> </form> </html> test6.html 33
PHP-filen <?php echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"stil.css \">"; // Hämta in valet från formuläret $val = $_POST['val']; switch($val) { case "G" : print "Du är tydligen glad idag!"; break; case "L" : print "Du är ledsen, trist för dig"; break; case "S" : print "Du är sur. Okej då!"; break; case "" : break; default : print "Nåt gick fel..."; break; }?> test6.php 34
Resultatet 35
Loopar Man använder loopar för att få en viss del av programmet för att utföra samma sak flera gånger I PHP är det framförallt två typer av loopar som används. Dessa är: For-loopen for($var ; brytvillkor ; förändring) { kodblock } While-loopen while(brytvillkor) { kodblock } Eller med do-while-loopen do { kodblock } while (brytvillkor); 36
Exempel på en for-loop <?php echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"stil.css\">"; for ($i=0 ; $i<10 ; $i++) { // Funktionen rand slumpar ett tal mellan // 4 och 87. Det slumpade värdet sparas // I variabeln slump, som skrivs ut.?> } $slump = rand (4,87); echo "Slumptal: $slump <br>"; test7.php 37
Resultatet 38
While-loop <?php echo "<link rel=\"stylesheet\" type=\"text/css\" href= \"stil.css\">"; $slumpal = 0; $antal_slumpningar = 0; while ($slumptal!= 50) { $slumptal = rand (1, 100); $antal_slumpningar++; } echo "Det krävdes $antal_slumpningar slumpningar till det blev 50.";?> test8.php 39
Resultatet 40
Funktioner Funktioner är ett mycket centralt begrepp inom all programmering Man använder funktioner för att dela in ett stort program i lättförståliga bitar Vissa delar av programmet skall kanske utföras flera gånger Indata Funktion Utdata 41
Forts PHP har över 2000 inbyggda funktioner. Använd dessa i första hand! Skrivna i C och är mycket effektiva och säkra Exempel på inbyggda funktioner: mysql_connect(); htmlentities(); fopen(); mail(); pow(); nl2br(); 42
Egna funktioner Skrivsättet för en funktion är: function funktionsnamn (parametrar) { funktionskropp; return returvärde } Funktionsnamnet skall vara ett beskrivande verb beraknasumma eller berakna_summa Parametrarna kan vara 0 eller flera Returvärdet är inte obligatoriskt OBS! Alla namn bör anges med vanliga bokstäver och inga specialtecken! 43
Exempel 1: Utan parametrar <?php function makeheader() { echo <html><head> ; echo <title> Hello! </title> ; echo </head> <hr> ; } makeheader(); echo </html> ;?> 44
Exempel 2: Med parametrar <?php function makeheader($title) { echo <html><head> ; echo <title> $title </title> ; echo </head> <hr> ; } makeheader( Detta är min titel! ); echo </html> ;?> 45
Exempel 3: Returvärde <?php function beraknaomkrets($radie) { $omkrets = 2 * $radie * 3.1415; return $omkrets } $resultat = beraknaomkrets(4); echo Omkretsen är $resultat le ;?> 46
Exempel 4: Flera funktioner <?php function beraknaomkrets($radie) { $omkrets = 2 * $radie * 3.1415; return $omkrets; } function beraknavolym($radie) { $volym = 4/3 * 3.1415 * pow($radie,3); } return $volym;?> echo Omkrets:. beraknaomkrets(3); echo Volym:. beraknavolym(3); test9.php 47
Resultatet 48
Exempel <?php echo "<link rel=\"stylesheet\" type=\"text/css\" href= \"stil.css\">"; function addera ($tal1, $tal2) { $summa = $tal1 + $tal2; return $summa; } $svar = addera (4,5); echo $svar;?> test10.php 49
Resultatet 50
Mer info om PHP Internet www.php.net Huvudsajten för PHP php.linux.se Referens på svenska www.phpbuilder.com Mer avancerad sajt Böcker PHP Programmering, ISBN 9-1636-0660-7 Webbprogrammering med PHP, ISBN 91-44-01941-6 Professional PHP programming, ISBN 1-86100-296-3 PHP 4 Bible, ISBN 0-76454-716-X Tretusenmiljadermiljoner olika forum 51
52