Introduktion till PHP
Webbprogrammering
Christian Ohlsson 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
Christian Ohlsson 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
Christian Ohlsson 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
Christian Ohlsson 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
Christian Ohlsson 5
Marknadsandelar
Christian Ohlsson 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
Christian Ohlsson 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
Christian Ohlsson 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
Christian Ohlsson 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
Christian Ohlsson 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!
<?php phpinfo (); ?>
info.php
Christian Ohlsson 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
Christian Ohlsson 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
Christian Ohlsson 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
Christian Ohlsson 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
Christian Ohlsson 15
Resultatet
Christian Ohlsson 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
Christian Ohlsson 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
Christian Ohlsson 18
Resultatet
Christian Ohlsson 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
Christian Ohlsson 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; // Vanligt tal $antal = -42; // Negativt tal
§ Prefixet -, 0 och 0x visar vilket sorts tal det är
Christian Ohlsson 21
Datatyper
§ Double § Används för att representera reella tal (flyttal) § Innehåller decimaler eller exponenter § Maximalt 1.8308
$antal = 6.14; // Tal med decimaler $antal = 0.0614e2; // Tal med exponent
Christian Ohlsson 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!
Christian Ohlsson 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();
Christian Ohlsson 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
Christian Ohlsson 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
Christian Ohlsson 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
Christian Ohlsson 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
Christian Ohlsson 28
Resultatet
Christian Ohlsson 29
Mer exempel på en if-sats
<?php echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"stil.css\">"; // 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"; ?>
test4.php
Christian Ohlsson 30
Resultatet
Christian Ohlsson 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;
}
Christian Ohlsson 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
Christian Ohlsson 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 Christian Ohlsson 34
Resultatet
Christian Ohlsson 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);
Christian Ohlsson 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
Christian Ohlsson 37
Resultatet
Christian Ohlsson 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
Christian Ohlsson 39
Resultatet
Christian Ohlsson 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
Funktion Indata Utdata
Christian Ohlsson 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();
Christian Ohlsson 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!
Christian Ohlsson 43
Exempel 1: Utan parametrar <?php
function makeHeader() { echo ”<html><head>”; echo ”<title> Hello! </title>”; echo ”</head> <hr>”;
} makeHeader(); echo ”</html>”;
?>
Christian Ohlsson 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>”;
?>
Christian Ohlsson 45
Exempel 3: Returvärde
<?php function beraknaOmkrets($radie) {
$omkrets = 2 * $radie * 3.1415; return $omkrets
} $resultat = beraknaOmkrets(4); echo ”Omkretsen är $resultat le”;
?>
Christian Ohlsson 46
Exempel 4: Flera funktioner
test9.php
<?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);
?>
Christian Ohlsson 47
Resultatet
Christian Ohlsson 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
Christian Ohlsson 49
Resultatet
Christian Ohlsson 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
Christian Ohlsson 51
Christian Ohlsson 52