Webbaserade informationssystem med PHP och databaser

Relevanta dokument
Webbaserade informationssystem med PHP och databaser

Webbaserade informationssystem med PHP och databaser

Webbprogrammering grunder

WCMS-15, Webbutvecklare CMS

Webbprogrammering grunder

Nya webbservern Dvwebb.mah.se

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

Karlstads Universitet, Datavetenskap 1

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

Du skall naturligtvis visa körexempel med output där det behövs i din rapport!

Lektion 5 HTML, CSS, PHP och MySQL

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

TNMK30 Elektronisk publicering HT 2014 Laboration 5: PHP och MySQL

DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index

WWW. Exempel på klientsidan. Överföring av en html-fil. Snyggare variant. Verkligt format. Meddelandeformat för begäran HTTP

Avancerade Webbteknologier

Essential Php Security Författare: Shiflett, Chris Antal sidor: 124 Förlag: O'Reilly

Databaser och Datamodellering Foreläsning IV

Databaser på webben. Revision Johan Näsholm, johan@nasholm.com

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

Statistik från webbplatser

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

Webbservrar, severskript & webbproduktion

729G28. Webbprogrammering och databaser. Introduktion till webbutveckling med PHP. Jakob Pogulis Institutionen för Datavetenskap (IDA)

Webbprogrammering. Sahand Sadjadee

FactoryCast HMI. Premium & Quantum PLC. MySQL Server och FactoryCast HMI databastjänst

Sample exam questions. Database exam TIG058

1.Lär känna MS SQL Observera. Tips. Förberedelse

Starta MySQL Query Browser

Hemsideutveckling för Anjool AB

729G28 Webprogrammering och databaser. Föreläsning 1: Diverse praktiskt om kursen Webprogrammering Databaser, terminologi

Projekt Foreläsning VI

Innehåll. MySQL Grundkurs

Sätta upp e-post server Ubuntu 14.04, del 1 installation av programvara, konfiguration av mysql och Postfix

Tentamen etjänster och webbprogrammering

Vyer, Prepared Statements, Triggers

emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)

Databasutveckling Introduktion till SQL och TSQL

Lite mer om CGI-programmering

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...

Introduktion HTML och PHP 732G16 Databaser design och programmering

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20

Labora&on 7 Syfte med laborationen:

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor

Innehåll Programability Del 2

INTRODUKTION TILL JDBC

Webprogrammering och 729G28 databaser Webprogrammering och databaser Kursöversikt Webprogrammering Designprocessen Lösningsförslag

Introduktion till Jasmine 1.2 ODQL

Förslag på svar Tentamen etjänster och webb- programmering

Innehåll. Föreläsning 3. javax.naming.context. javax.sql.datasource. Vad är JDBC? Java Naming and Directory Interface(JNDI) Viktigaste metoder:

PHP. Dynamiska webbsidor

Webbteknik II. Föreläsning 5. Restless farewell. John Häggerud, 2011

Services + REST och OAuth

F8 Webbteknologier 1. Dynamiska webbsidor

Vad är en databas? Databasutveckling Med MySQL/MariaDB

Webbprogrammering, grundkurs 725G54

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information.

Övningar i SQL. SQLAccess.doc Ove Lundgren

JobOffice SQL databas på server

Introduk+on +ll programmering i JavaScript

SQL. Structured Query Language. Frågespråk för att används för. Kommandon. data åtkomst data manipulation

Webprogrammering och databaser. 729G28 Webprogrammering och databaser. Kursöversikt. Praktisk info. Webprogrammering. Ändringar mot förra året

PHP. TNMK30 - Elektronisk publicering

MySQL - testmiljöer på minuter. Thomas Johansson IT-avdelningen

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

Prova på-laboration i SQL

Filbeskrivningar Eller på särskild CD skiva

Statistik från webbplatser

Asp.net mvc intro PER KVARNBRINK,

Programutveckling med Java Development Kit. (JDK 1.1.x) och Programmers File Editor (PFE 7.02)

! Webprogrammering. ! Databasteori och praktik. ! Fö, le, la + projekt. ! Examination (tenta, dugga + labb, ! Studera användarna och deras problem

Föreläsning 6 Databaser och säkerhet

Webbprogrammering - 725G54 PHP. Foreläsning II

Programmeringteknik. Planering MÅL LABB: MOMENT LAB4 HTML - EXEMPEL HTML. Webbdelen

Webbserver och HTML-sidor i E1000 KI

Grundläggande datalogi - Övning 1

VAD GÖR DU / VEM ÄR DU?

F8 Webbteknologier 2. PHP PHP: Hypertext Preprocessor

Manual för din hemsida

Klientprogrammering mot databaser

JAVASCRIPT. Beteende

Användarhandledning Version 1.2

Olika slags datornätverk. Föreläsning 5 Internet ARPANET, Internet började med ARPANET

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

PHP-presentation Dataföreningens Open Source-nätverk

I denna laboration skriver jag inte ut resultatet på de flesta frågorna utan du kör dem själv i din miljö.

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

F8 Webbteknologier 2. EDA095 Nätverksprogrammering. Roger Henriksson Datavetenskap Lunds universitet

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14

Classpath. Class loading + resurser. Class loader. jar-filer

PHP. PHP: Hypertext Preprocessor

Alternativet är iwindows registret som ni hittar under regedit och Windows XP 32 bit.

Language Integrated Query, LINQ, och databaser

L0009B. Moment. Introduktion till geografiska databaser: G:\L0009B\Allmänt\IntroGeoDB.pdf (F)

Installationsanvisningar VisiWeb. Ansvarig: Visi Closetalk AB Version: 2.3 Datum: Mottagare: Visi Web kund

Från Excel laddningar till web arbetsflöden

1. PLSQL 2 2. Select into

Genomgång av tentamen. Databasteknik ITHS 4/3 2016

Transkript:

Dagens föreläsning Webbaserade informationssystem med PHP och databaser 2D1522 Datorteknik och -kommunikation 2D2051 Datbasteknik och datorkommunikation 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. URL-rewriting, Hidden fields, Cookies Mailhantering via web. Gör din egen hotmail 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 1 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 2 Dagens innehåll Hur skapa dynamiskt innehåll med PHP PHP-syntax Web och databaser Sessionshantering Mailhantering via web Observationer gällande cgi-script I de flesta fall ska output ha mime-typen text/html I dynamiskt genererade html-sidor är ofta största delen av sidan statisk, dvs statiska print-satser utan något dynamiskt innehåll. De flesta programmeringsspråk är utvecklade före webben, och är inte specialanpassade just för web-bruk. 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 3 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 4

Server-Pages-språk Snart efter webbens uppkomst utvecklades flera så kallade server pages-språk. Specialanpassade för web-bruk Hanterar problemen på föregående sida på ett bra sätt. Exempel: asp, jsp, php PHP I denna kurs använder vi i år språket PHP som vunnit mycket i populäritet de senaste åren. Enkelt för nybörjare Stor spridning (5 miljoner servers för några år sedan) Snabbt 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 5 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 6 Grundtanken i server-pages-språk Enkelt exempel i PHP Är nästan som vanliga html-dokument, men på de platser man vill ha dynamiskt innehåll kan man placera programkod. Webservern noterar att sidan är en PHP-sida och låter en php-tolk förbehandla sidan, dvs exekvera programsnuttarna. Resultatet är ren html-kod (eller xml eller gif eller vad man vill) och tolkas som vanligt av webläsaren. Om inget annat anges sätts MIME-typen automatiskt till text/html 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 7 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 8

Formulär-variabler i PHP Det är mycket enkelt att komma åt variabler som skickats i en GET eller POST-request. De kan refereras genom $_REQUEST[ variabelnamn ], ibland även med $variabelnamn beroende på hur PHP installerats. Övriga variabler (t.ex. HTTP_USER_AGENT) kan hämtas med funktionen GETENV. Variabelexempel i PHP media>cat test2.php <html> <head> <title>php-test</title> </head> <body> <h1>banan=<?php print $_REQUEST[ banan ];?></h1> <h1>bilar=<?php print $_REQUEST[ bilar ];?></h1> <h1>din browser: <?php print getenv('http_user_agent');?> </h1> </body> </html> 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 9 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 10 Dagens innehåll Språket PHP Hur skapa dynamiskt innehåll med PHP PHP-syntax Web och databaser Sessionshantering Mailhantering via web 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 (exempel på detta kommer längre fram) 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 11 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 12

PHP grunder För att kunna använda PHP på en webserver krävs att webservern är konfigurerad för detta t.ex. dupond.nada.kth.se:8080 och www.nada.kth.se, men troligen inte spray, geocities etc. Filnamnen ska sluta på.php Programkod omsluts av processinstruktionen <?php diverse programinstruktioner?> PHP grunder (2) En websida kan bestå av flera block html-kod och php-kod <html> <head> <title><?php print date( Y-m-d );?></title> </head> <body> <?php $a=17; print $a;?> </body> </html> 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 13 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 14 Variabler Om vi gör ett formulär i html... 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;?> 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 15 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 16

... så kommer vi åt variablerna från formuläret på olika sätt beroende på hur PHP lagts upp: Som vanlig variabel (detta är en säkerhetsrisk och är vanligen avstängt). <html> <head> <title>php-test</title> </head> <body> Ett säkrare sätt att komma åt formulärvariabler Arrayen $_REQUEST användas för både GET-, POST- (och cookie-) variabler. <h1>banan=<?php print $_REQUEST[ banan ];?></h1> <h1>bilar=<?php print $_REQUEST[ bilar ];?></h1> <h1>din browser: <?php print getenv('http_user_agent');?> </h1> </body> </html> 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 17 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 18 Formulär-variabler i PHP Det är mycket enkelt att komma åt variabler som skickats i en GET eller POST-request. Villkor med if-else De kan refereras genom $_REQUEST[ variabelnamn ] ibland även med $variabelnamn beroende på hur PHP installerats. Övriga variabler (t.ex. HTTP_USER_AGENT) kan hämtas med funktionen GETENV. 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 19 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 20

Block Loopar med while Obs! Vanlig html-kod som genereras För att knyta samman flera satser till ett block används måsvingar {} på samma sätt som i Java och C. Dessa fås vanligen genom att samtidigt trycka ner altgraph-7 respektive altgraph-0 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 21 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 22 Funktioner Includes 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 23 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 24

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 ) PHP-syntax Web och databaser Sessionshantering Mailhantering via web Databaser och web 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 25 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 26 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 då man gör enkla saker Informix I år använder vi Informix som ni redan använt i laboration 2. Fördelar Klarar hela SQL 1 Nackdelar Klarar endast SQL 1 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 27 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 28

Informix använda dbaccess nada11:~>ssh dupond inge@dupond's password: nada-lösenordet Last login: Fri May 02 2003 14:14:57 from nada11.nada.kth. Sun Microsystems Inc. SunOS 5.6 Generic August 1997 No mail. [1] 3756 dupond>module add informix/2000 dupond>dbaccess Använda dbaccess DBACCESS: Query-language Connection Database Table Session Exit Use SQL query language. -------------------------------------- Press CTRL-W for Help -------- Flytta -> med piltangent Välj genom att trycka på return DBACCESS: Query-language Connection Database Table Session Exit Select, Create, Info, Drop or Close a database. --------------------------------------- Press CTRL-W for Help -------- 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 29 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 30 Använda dbaccess forts DATABASE: Select Create Info Drop close Exit Select a database to work with. -------------------------------- Press CTRL-W for Help -------- SELECT DATABASE >> Select a database with the Arrow Keys, or enter a name, then press Return. ---------------- @course_2000 -------- Press CTRL-W for Help ----- Flytta ner _me99_enj@course_2000 aaaaarvmart@course_2000 med aaadanielnovak@course_2000 aaaskivor@course_2000 aaaaarvidmartin@course_2000... Dbaccess välja databas SELECT DATABASE >> Select a database with the Arrow Keys, or enter a name, then press Return. --------------- @course_2000 ------- Press CTRL-W for Help --------... danielmartin@course_2000 cd@course_2000 datkom03koklista@course_2000 cdb@course_2000 datkom03varuhuset@course_2000 cdhregel@course_2000 datkom04koklista@course_2000 danemarwiss@course_2000... Välj 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 31 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 32

Dbaccess vidare till SQL-editorn Välj Välj Dbaccess SQL-editorn Exekvera SQL-satser DATABASE: Select Create Info Drop close Exit Return to the DBACCESS menu. -- datkom03varuhuset@course_2000 ---- Press CTRL-W for Help ------ SQL: New Run Modify Use-editor Output Choose Save Info Drop Exit Enter new SQL statements using SQL editor. -- datkom03varuhuset@course_2000 ---- Press CTRL-W for Help ----- Välj SQL-editorn Skriv SQL-satser här DBACCESS: Query-language Connection Database Table Session Exit Use SQL query language. -- datkom03varuhuset@course_2000 ---- Press CTRL-W for Help ----- NEW: ESC = Done editing CTRL-A = Typeover/Insert CTRL-R = Redraw CTRL-X = Delete character CTRL-D = Delete rest of line ------ datkom03varuhuset@course_2000 ---- Press CTRL-W for Help ----- 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 33 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 34 Informix skapa en tabell Tabellnamn Kolumnnamn Datatyp SQL: New Run Modify Use-editor Output Choose Save Info Drop Exit Run the current SQL statements. -------- datkom03varuhuset@course_2000 ------ Press CTRL-W for Help -------- create table tabort (hej integer, hopp varchar(30, 2)); Informix sätta in värden i en tabell Tabellnamn Värde kolumn 1 Värde kolumn 2 SQL: New Run Modify Use-editor Output Choose Save Info Drop Exit Run the current SQL statements. ----- datkom03varuhuset@course_2000 --------- Press CTRL-W for Help ------ insert into tabort values (7, "Banan"); Table created. 1 row(s) inserted. 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 35 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 36

Informix selektera värden från en tabell NEW: ESC = Done editing CTRL-A = Typeover/Insert CTRL-R = Redraw CTRL-X = Delete character CTRL-D = Delete rest of line Informix uppdatera rader i en tabell -------- datkom03varuhuset@course_2000 --------- Press CTRL-W for Help -------- select * from tabort; Kolumnnamn SQL: New Run Modify Use-editor Output Choose Save Info Drop Exit Run the current SQL statements. -------- datkom03varuhuset@course_2000 ----- Press CTRL-W for Help -------- SQL: New Run Modify Use-editor Output Choose Save Info Drop Exit Run the current SQL statements. -------- datkom03varuhuset@course_2000 ----- Press CTRL-W for Help -------- update tabort set hopp="tomat" where hej=7; hej hopp 7 Banan 1 row(s) retrieved. 1 row(s) updated. 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 37 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 38 Informix ta bort rader från en tabell Informix radera en tabell SQL: New Run Modify Use-editor Output Choose Save Info Drop Exit Run the current SQL statements. -------- datkom03varuhuset@course_2000 ----- Press CTRL-W for Help -------- delete from tabort where hej=7; SQL: New Run Modify Use-editor Output Choose Save Info Drop Exit Run the current SQL statements. -------- datkom03varuhuset@course_2000 ----- Press CTRL-W for Help -------- drop table tabort; 1 row(s) deleted. Table dropped. 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 39 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 40

Informix från php INSERT och UPDATE 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!!! <?php $conn_id = ifx_connect ("sangbok@course_2000") or die("kunde inte kontakta databasen sangbok"); $query = "SELECT firstname, lastname, personnr FROM personer"; SQL-sats $result = ifx_query ($query, $conn_id) Exekvera SQL-sats or die("kan inte hämta personer"); while (is_array($row = ifx_fetch_row($result, "NEXT"))) { print("<p>$row[firstname] $row[lastname]</p>\n"); } ifx_free_result($result); ifx_close($conn_id);?> Insert och update fungerar som select, fråntaget att satsen inte returnerar något result-set, endast en eventuell statuskod. <?php $conn_id = ifx_connect ("sangbok@course_2000") or die("kunde inte kontakta databasen sangbok"); $query = "INSERT INTO personer VALUES ('Jan', 'Banan', '77-77')"; $result = ifx_query ($query, $conn_id) or die("kan inte sätta in i personer"); ifx_close($conn_id);?> 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 41 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 42 PHP-syntax Web och databaser Sessionshantering Mailhantering via web Sessionshantering 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 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 43 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 44

Hur sessioner? Hidden fields 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. Den enklaste, och mest ursprungliga metoden är att lägga in denna sessionsid i ett dolt fält (hidden variable) som fylls i i varje html-formulär som utgör sessionen. 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 45 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 46 Exempel hidden fields URL-rewriting Det är inte nödvändigt att använda formulär överallt i en session Man kan istället simulera formulär genom att i alla sidor som skickas till klienten, skriva om länkar så att de ser ut som de kom från ett formulär. Exempel: <a href=! foo.php! > ersätts med <a href=! foo.php?mitt-session-id=4711! > 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 47 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 48

Nackdelar med hidden fields och URL-rewriting Normalt kombinerar man hidden fields och URL-rewriting. Formulär använder hidden fields och övriga länkar använder URL-rewriting. Nackdelen med denna teknik är att så fort man går till en extern site så tappas sessionen. 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. Detta är dock kontroversiellt hos somliga användare. Det som lagras är ett antal <variabelnamn><variabelvärde> 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 sessionsiden är primary key för övrig data. 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 49 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 50 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 _REQUEST. echo "$_REQUEST[email]"; Säkerhet En server kan endast komma åt cookies som servern själv har satt. 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 51 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 52

Mer om cookies (2) Mail 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 PHP-syntax Web och databaser Sessionshantering Mailhantering via web Om inget expire-date anges raderas cookien när webläsaren avslutas. 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 53 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 54 Mail i php skicka webmail Att skicka ett mail från ett php-program är enkelt. I sin enklaste form behövs en mottagaradress, en rubrikrad och en meddelandekropp 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 55 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 56

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 och URL-rewriting kan vara enkla ibland, men oftast är cookies bättre (alla användare accepterar dock inte cookies). Mailhantering är mycket enkel via webben (dock något mer komplicerad för att läsa mail). 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 57 Referenser Referenser Cookies http://perl.about.com/library/weekly/aa051600d.htm http://www.cookiecentral.com/ PHP www.zend.com www.php.net (observera att man kan söka efter funktioner i manualen) www.php.net/manual/sv/printwn/index.php (manualen) 2006-04-20 Björn Hedin, Inge Frick, NADA/KTH 2002-2006 58