Ladda ner presentationen
Presentation laddar. Vänta.
Publicerades avCarina Arvidsson
1
2002-05-06 © Björn Hedin, NADA/KTH 2002 1 Webbaserade informationssystem med PHP och MySQL 2D1522 Datorteknik och -kommunikation http://www.nada.kth.se/kurser/kth/2D1522/
2
2002-05-06 © Björn Hedin, NADA/KTH 2002 2 Dagens föreläsning Syfte –Ge de praktiska kunskaper och färdigheter som krävs för att bygga webbaserade informationssystem med databaser. Mål –Lära er den viktigaste syntaxen i PHP. Variabler och tilldelning, villkor, loopar, funktioner, modularisering –Lära er hur databasteori kan appliceras praktiskt i ett informationssystem. –Lära er hur man kan göra sessioner, dvs hantera ett tillstånd såsom en shoppingvagn eller en inloggning. Hidden filelds, Cookies –Mailhantering via web. ”Gör din egen hotmail”
3
2002-05-06 © Björn Hedin, NADA/KTH 2002 3 Dagens innehåll PHP-syntax Web och databaser Sessionshantering Mailhantering via web
4
2002-05-06 © Björn Hedin, NADA/KTH 2002 4 PHP PHP är uppbyggt från grunden för att passa webben. Är ett så kallat ”server pages-språk”, dvs html-kod blandas med programkod. Fördelar –Stor spridning –Snabbt –Enkelt Nackdelar –Ganska ostrukturerat, om en funktion är användbar läggs den in. –Lite okompatibelt mellan olika versioner
5
2002-05-06 © Björn Hedin, NADA/KTH 2002 5 PHP grunder För att kunna använda PHP på en webserver krävs att webservern är konfigurerad för detta –t.ex. pub.gt.kth.se och NADAs webserver, men troligen inte spray, geocities etc. Filnamnen ska sluta på.php Programkod omsluts av processinstruktionen <?php diverse programinstruktioner ?>
6
2002-05-06 © Björn Hedin, NADA/KTH 2002 6 PHP grunder (2) En websida kan bestå av flera block html-kod och php-kod <?php a=17; print a; ?>
7
2002-05-06 © Björn Hedin, NADA/KTH 2002 7 Variabler PHP har ingen ”strikt” datatypning. Variabler måste inte deklareras innan de används. Variabler föregås av $-tecken <?php $banan = 17; $gurka = ”Hej hopp i lingonskogen"; $myFloat = 14.1; print $banan; print $gurka; print $myfloat; ?>
8
2002-05-06 © Björn Hedin, NADA/KTH 2002 8 Variabler från formulär fungerar som ”vanliga” variabler
9
2002-05-06 © Björn Hedin, NADA/KTH 2002 9... och så här gjorde man ett formulär i html
10
2002-05-06 © Björn Hedin, NADA/KTH 2002 10 Villkor med if-else
11
2002-05-06 © Björn Hedin, NADA/KTH 2002 11 Block För att knyta samman flera satser till ett block, motsvarande BEGIN och END i Pascal används ”måsvingar” {}. Dessa fås på en mac genom att samtidigt trycka ner alt- shift-8 respektive alt-shift-9
12
2002-05-06 © Björn Hedin, NADA/KTH 2002 12 Loopar med while Obs! Vanlig html-kod som genereras
13
2002-05-06 © Björn Hedin, NADA/KTH 2002 13 Funktioner
14
2002-05-06 © Björn Hedin, NADA/KTH 2002 14 Includes
15
2002-05-06 © Björn Hedin, NADA/KTH 2002 15 Includes (2) Includes är lämpliga för att lägga funktioner som förekommer flera gånger. Det går även att lägga t.ex. variabler i ”config-filer” som återkommer i flera filer, t.ex. IP-adresser till andra datorer, databaslösenord etc. Includefilerna kan, till skillnad från html och php-filer, ligga var som helst i filstrukturen vilket kan vara både bra och dåligt ur säkerhetssynvinkel ( include ”/etc/passwd” )
16
2002-05-06 © Björn Hedin, NADA/KTH 2002 16 Databaser och web PHP-syntax Web och databaser Sessionshantering Mailhantering via web
17
2002-05-06 © Björn Hedin, NADA/KTH 2002 17 MySQL Gratis (open source) databashanterare till Unix och Windows (www.mysql.com) utvecklat sv svenskt företag Fördelar –Gratis –Brett ”community support” –Mycket snabb Nackdelar –Klarar inte full SQL, i synnerhet inte vyer och ”nestled select statements” –Kan inte hantera rollbacks (dock finns vissa möjligheter i nyare versioner, men då påverkas prestanda negativt)
18
2002-05-06 © Björn Hedin, NADA/KTH 2002 18 MySQL - logga in från terminalfönster DatabasanvändarnamnDatabasnamnSkriv databaslösen här
19
2002-05-06 © Björn Hedin, NADA/KTH 2002 19 MySQL - Skapa en tabell TabellnamnKolumnnamnDatatyp
20
2002-05-06 © Björn Hedin, NADA/KTH 2002 20 MySQL - Sätta in värden i en tabell TabellnamnVärde kolumn 1Värde kolumn 2
21
2002-05-06 © Björn Hedin, NADA/KTH 2002 21 MySQL - selektera värden från en tabell Kolumnnamn
22
2002-05-06 © Björn Hedin, NADA/KTH 2002 22 MySQL - uppdatera rader i en tabell
23
2002-05-06 © Björn Hedin, NADA/KTH 2002 23 MySQL - ta bort rader från en tabell
24
2002-05-06 © Björn Hedin, NADA/KTH 2002 24 MySQL - Se definitionen av en befintlig tabell
25
2002-05-06 © Björn Hedin, NADA/KTH 2002 25 MySQL - Radera en tabell
26
2002-05-06 © Björn Hedin, NADA/KTH 2002 26 MySQL - uppdatera värden i en tabell
27
2002-05-06 © Björn Hedin, NADA/KTH 2002 27 MySQL från php Obs!!! Från och med nu skippar jag html- innehållet som ska vara före och efter php- blocken för att spara skärmutrymme!! !
28
2002-05-06 © Björn Hedin, NADA/KTH 2002 28 INSERT och UPDATE Insert och update fungerar som select, fråntaget att satsen inte returnerar något ”result-set”, endast en eventuell statuskod.
29
2002-05-06 © Björn Hedin, NADA/KTH 2002 29 Sessionshantering PHP-syntax Web och databaser Sessionshantering Mailhantering via web
30
2002-05-06 © Björn Hedin, NADA/KTH 2002 30 Vad är en session Webben är i princip tillståndslös. Varje hämtning av en sida är oberoende av andra hämtningar. Ofta vill man dock ha en ”kontext”, där resultat av tidigare sidladdningar kan påverka framtida. En session skapar just en sådan kontext
31
2002-05-06 © Björn Hedin, NADA/KTH 2002 31 Hur sessioner? Grundprincipen är enkel: –Se till att skaffa en unik identifierare som ska identifiera sessionen, en s.k. sessionsid. –Se till att denna sessionsid på något sätt är tillgänglig i alla script som ska utgöra sessionen, dvs att den på något sätt skickas med från klienten vid varje uppkoppling.
32
2002-05-06 © Björn Hedin, NADA/KTH 2002 32 Hidden fields Den enklaste, och mest ursprungliga metoden är att lägga in denna sessionsid i ett dolt fält som fylls i i varje html-formulär som utgör sessionen.
33
2002-05-06 © Björn Hedin, NADA/KTH 2002 33 Exempel hidden fields
34
2002-05-06 © Björn Hedin, NADA/KTH 2002 34 Nackdelar med hidden fields Alla sidor i sessionen måste vara länkade till varandra genom formulär. –Om man vill ha en vanlig statisk sida någonstans under sessionen måste även den läggas inom ett formulär. –Om man går till en extern site försvinner sessionen. Kort och gott: Ganska bökigt.
35
2002-05-06 © Björn Hedin, NADA/KTH 2002 35 Sessioner med Cookies Cookies är ett annat, bättre sätt att hantera sessioner. Varje server har rätt att lagra upp till 256 tecken på klientdatorn i en speciell cookiefile. Det som lagras är ett antal Oftast är det smartast att lagra endast en sessionsid på klienten, och sedan låta all övrig intressant information som servern kan vilja lagra ligga på servern i en databas där sessionsidn är ”primary key” för övrig data.
36
2002-05-06 © Björn Hedin, NADA/KTH 2002 36
37
2002-05-06 © Björn Hedin, NADA/KTH 2002 37 Mer om cookies Namnkonflikter –Om det finns risk för namnkonflikter, dvs att man använder variabelnamn i cookies som även kanske används ”lokalt” går det att komma åt cookies via den globala arrayen HTTP_COOKIE_VARS echo "$HTTP_COOKIE_VARS[email]"; Säkerhet –En server kan endast komma åt cookies som servern själv har satt.
38
2002-05-06 © Björn Hedin, NADA/KTH 2002 38 Mer om cookies (2) Värdena på cookies för en viss webplats skickas med i http- headern varje gång en request görs. Från servern: Content-type: text/html Set-Cookie: foo=bar; path=/; expires Mon, 09-Dec-2002 13:46:00 GMT Från klienten Content-type: text/html Cookie: foo=bar Om inget expire-date anges raderas cookien när webläsaren avslutas.
39
2002-05-06 © Björn Hedin, NADA/KTH 2002 39 Mail PHP-syntax Web och databaser Sessionshantering Mailhantering via web
40
2002-05-06 © Björn Hedin, NADA/KTH 2002 40 Mail i php Att skicka ett mail från ett php-program är enkelt. I sin enklaste form behövs en mottagaradress, en rubrikrad och en meddelandekropp
41
2002-05-06 © Björn Hedin, NADA/KTH 2002 41 skicka webmail
42
2002-05-06 © Björn Hedin, NADA/KTH 2002 42 Sammanfattning Databashantering är enkel i PHP. Grundprincipen är: –Skapa en uppkoppling mot en databas –Exekvera ett statement –Om det var ett select-statement så iterera över en resultatmängd (dvs loopa över alla rader som returneras). Sessioner behövs för att kunna hålla ett tillstånd bland en mängd websidor Hidden fields kan vara enkla ibland, men oftast är cookies bättre Mailhantering är mycket enkel via webben (dock något mer komplicerad för att läsa mail).
43
2002-05-06 © Björn Hedin, NADA/KTH 2002 43 Referenser Cookies http://perl.about.com/library/weekly/aa051600d.htm http://www.cookiecentral.com/ PHP www.zend.com www.php.net MySQL www.mysql.com
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.