Databasestøttet Webpublicering1 Databasestøttet Webpublicering, Efterår 2005 Lektion 5, Mandag 26/9 : Web-programmering med PHP Hvad er gennemgået? Værdien.

Slides:



Advertisements
Lignende præsentationer
Trehøje-Pigerne Side 1 Vejledning til brug af hjemmesiden Det er slet ikke så vanskeligt – så brug hjemmesiden flittigt… Det er.
Advertisements

Kort om JavaScript Afvikles i browser på klienten Sendes fra server (php, asp, aspx, htm) eller startes i klient som htm/html fil. Skabelon: –”main” -
Introduktion til HTML HTML dokumentets struktur & Indhold.
Intro til brug af Carla til adresser og andet for ledere i FDF Virum
Introduktion til Javascript – Grundlæggende Webdesign, F2004. Introduktion til Javascript.
Challenges in Web Search Engines • Spam • Content Quality • Quality Evaluation • Web Conventions • Duplicate Hosts • Vaguely-Structured Data.
Hvordan bruger jeg First Class konferencerne ?
Intro Forelæsning 2 Linux install-party lør.14.sept kl – man. 14.okt – Kursets omfang :7,5 ECTS Kursussammensætning: forelæsning.
Intro Eksamen 4-ugers-projekter? Eksamensforberedelse De sidste tre gange?
NetBeans Installation og brug.
Array vs. ArrayList. Arrays Et array er en struktureret metode til at gemme flere værdier af den samme datatype. Data’en i et array ligger op ad hinanden.
Grundlæggende programmering Efterår 2001
Intro Variabler - datatyper. 2. forelæsning Hvad skete sidste gang Hvad er PHP? Kursussammensætning: læse – newsgroup – forelæsning – øvelsestime – aflevering.
Dag 3 Indkøbskurv Jeres sider er nu synlige på Dagens program:
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
FEN Diskret matematik/Seminar 3 - proofs 1 Beviser Et bevis er en argumentation, som overbeviser om, at en påstand er sand, påstanden kaldes.
XML1 4.7 XML and Its Data Model. XML2 Introduktion til XML, 178 XML = eXtensible Markup Language Markup language –sprog, hvor data "pakkes ind" i tags.
GP5, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 5 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 1 HTML og PHP: Baglæs fra output til input PHP: Variable, strenge og arrays Funktioner,
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Intro Projekttyper v/ Lise Louv, Uddannelsesafdelingen Siden sidst: evaluering på opgaver og virtuel kursus. Kursets ugeforløb læse – forelæsning – øvelsestime.
NOEA/IT - FEN1 Typeparametisering/Genericity Generics i.NET 2 og C#
18 – Java Server Faces. 2 NOEA2009Java-kursus – JSF 2 Web-applikationer - 1 Brugere interagerer med en Web-browser Browseren sender forespørgsler til.
Intro Forelæsning 6 Linux Install Party i PC-Cafeen i morgen.
Intro Bemærkninger? Præsentation af litteratur: PHP and MySQL Web Development (SAMS) PHP Pocket Reference (O’Reilly) Dictionary of Networking (Sybex)
Endelige Automater Simple sprog (regulære sprog) kan beskrives vha. Regulære udtryk. Regulære sprog kan altid parses vha endelige automater. Nondeterministik.
FEN Prædikater/Seminar 11 Prædikatslogik eller Kvantificerede udtryk Prædikater udvider propositionslogikken på to måder: –Vi tillader variable.
1 Sortering I elementære metoder. 2 Plan Terminologi Elementære metoder til sortering -sortering ved udvælgelse -sortering ved indsættelse -Shellsort.
XML og Skemaer Costanza Navarretta Center for Sprogteknologi, Københavns Universitet
Intro til C# apps Kodegennemgang af simpel C# app
Videregående pc-vejledning Modul 07: Elektronisk post 60+Bornholm.
FEN Sprog1 Lidt om sprog Definition: Et sprog over et endeligt alfabet  (sigma) er en mængde af strenge dannet af tegn fra . Eksempel: Lad.
Program Design – 4 Introduktion til PHP. Dagens lektion Hvad er PHP?  - og lidt historie Hvordan virker PHP? Grundlæggende PHP  Variable  Typer  Løkker.
W1b1 PC baseret analyse og simulering. w1b2 Definition Digital Elektronisk beregningsmaskine, der har intern hukommelse til lagring af program og mellem-regninger.
Fundamentale datastrukturer
Intro Evaluering De sidste to gange?. HTTP, cookies og sessions Forelæsning nr 10 Tilbage til trafikken mellem server – client Sende HTTP-request og respons.
FEN KbP/seminar 1: Specifikationer/Notationen Q 1 Kontraktbaseret programmering: Seminar 1 Om specifikationer Algoritmenotationen Q.
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
Masterpages/Otto Knudsen 1 Navigation på webstedet Kontroller til navigation mellem siderne på webstedet.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Procestræ under afvikling af cp init login shell cp cp src dest.
Paradigmer i Programmering 2. Sammensatte typer Tupler og lister Programmering med rekursion Programmering med pipe-lines Programmering med polymorfe.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
Paradigmer i Programmering 1. Program for idag : Funktioner og udtryk i SML : Øvelse : Frokost – 14.00: Deklarative.
Validering af bruger-input i.NET WebForms Valideringsmuligheder i ASP.NET Fordele og ulemper Server-side vs. client-side Formatering vs. Validering.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
Adresse Web Services 22/ Julian Hollingbery Kort & Matrikelstyrelsen.
Fremstilling af Simple WEB steder [ITPL] Foråret 2004
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
PD – kursusgang 3 Introduktion til Java Script. Mål Viden om hvordan JavaScripts indlejres i HTML dokumenter Viden om programmering i JavaScript  Erklæring.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
Intro Siden sidst: evaluering på opgaver og virtuel kursus Kursussammensætning: forelæsning – læse – arbejde selvstændigt – newsgroup – øvelsestime – aflevering.
Intro Evaluering De sidste to gange?. HTTP, cookies og sessions Forelæsning nr 10 Tilbage til trafikken mellem server – client Sende HTTP-request og respons.
Kjeld Svidt  Institut for Byggeri og Anlæg  Aalborg Universitet IT i Byggeriet Semester kursusgang Projektweb og html (fortsat) Kjeld Svidt.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
IT i Byggeriet Semester kursusgang Projektweb og html (fortsat) Kjeld Svidt Kjeld Svidt  Institut for Bygningsteknik  Aalborg.
 Jens Bennedsen, 2003Introducerende objektorienteret programmering Exceptions.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
Indledende Programmering Uge 6 - Efterår 2006
Variable og arrays Webintegrator HF1 PHP Object orienteret.
Programmering I Java/C# Datatekniker Dit første projekt.
PHP Intro Webintegrator PHP. PHP Baggrund PHP er et server-side programmeringssprog anvendt til udvikling af dynamiske webapplikationer og websteder.
Objecter Introduktion Webintegrator HF1 PHP Object orienteret.
1587 Server - Blandet miljø Webintegrator HF1
Studiepraktik Thomas Bøgholm Mikkel Hansen Jacob Elefsen
Programmering.
Quiz Uge 2 – mandag.
Præsentationens transcript:

Databasestøttet Webpublicering1 Databasestøttet Webpublicering, Efterår 2005 Lektion 5, Mandag 26/9 : Web-programmering med PHP Hvad er gennemgået? Værdien af validering af input fra brugere (form variable) Regulære udtryk/mønstre (expressions/patterns) PHP funktionen ereg Eksempler på validering af form-variable Biblioteksfunktioner til vaidering af form-variable Andre anvendelser af regulære udtryk Anvend ereg til udtræk af data fra web-sider Introduktion til øvelserne

Databasestøttet Webpublicering2 Gennemgået indtil nu Variable, tal, strenge og tabeller (arrays) Udregninger if-konstruktioner og løkker Funktioner og genbrug af kode Modtagelse af brugerens data vha. forms

Databasestøttet Webpublicering3 Værdien af en validering af form-variable Uden en validering af bruger-input er vore Web-programmer ikke robuste! F.eks. : Currency exchange service —exchange.html Exchange Bank Enter value in kroner: Filen exchange.php: Exchange Bank <? $kroner = $_POST[’kroner’] ; $rate = 8.43; $fee = 20.0; $dollars = ($kroner - $fee) / $rate; $dollars = number_format($dollars, 2, ",", "."); echo "For DKr. $kroner you receive \$$dollars"; ?> New Computation // Problem:Ingen undersøger om form-variablen kroner indeholder et tal

Databasestøttet Webpublicering4 Hvad kan gå galt, hvis vi ikke validerer form variablene? Forskellige slags af fejl kan optræde i den fortsatte udregning baseret på fejlagtig bruger-input: Kosmetiske fejl: Programmet returnerer ikke-velformet HTML kode til browseren Semantiske fejl: Programmet returnerer velformet HTML kode, som ser ud til at være korrekt – men ikke er det! Meget grove fejl: Data slettes fra databasen fordi manglende validering kan resulterer i tilgang fra hackere Ved at validere input fra brugerne kan undgå det fleste typer fejl

Databasestøttet Webpublicering5 Mange slags form–variable Vi har set behovet for kunne afgøre om en form-variabel indeholder et tal. Der er mange andre typer af data vi kan bede brugerne om at indtaste: Decimaltal (kommatal) adresser Tal i et bestemt interval (f.eks., postnumre) URLadresser Farver (red, green, blue) Datoer... Vi har brug for et sprog til at beskrive strenge med et bestemt mønster Sproget vi behøver kaldes regulære udtryk regular expressions, eller mønstre patterns.

Databasestøttet Webpublicering6 Syntaks af regulære udtryk 1. del Et mønster m kan have forskellige former, incl.:. matcher et hvert andet tegn c matcher tegnet c; tegnet. skrives: \. m1m2 et sekventielt match af m1 og m2. F.eks.: mønsteret ‘a.c’ matcher strengen ‘abc’ m* matches af 0 eller flere sekventielle forekomster af tegnfølgen, som matcher mønsteret m. F.eks.: strengen ‘abbbbbba’ og ‘aa’ matcher mønsteret ‘ab*a’ (m) matches af strenge som matcher m. eks: Strengen ‘cababcc’ matcher mønstret ‘c(ab)*cc’ m+ matches af 1 eller flere sekventielle forekomster af tegnfølger, som matcher mønstret m. Eks: mønstret ‘ca+b’ matches af strengen ‘caaab’ men ikke strengen ‘cb’ m? matches af 0 eller 1 forekomst af tegnfølgen, som matcher mønsteret m. F.eks.: Møntret ‘abc?’ matches af både strengene ‘abc’ og ‘ab’.

Databasestøttet Webpublicering7 Syntax af regulære udtryk, 2. del Et mønster m kan have forskellige former, incl.: m1 | m2 matches af tegnfølgen, som matcher m1 eller m2. F.eks.: mønstret ‘(hi|hello)’ matches af tegnfølgen ‘hi’ og tegnfølgen ’hello’ [...] matches af tegn i den specificerede klasse eller interval. F.eks.: mønsteret [abc1-4]* matches af tegnfølgen bestående af tegnene a, b, c, 1, 2, 3, 4 [ˆ...] matches af alle tegn som IKKE er i denne klasse eller dette interval, f.eks.: mønsteret [ˆabc1-4]* matches af tegnfølgen bestående af ethvert tegn undtagen a, b, c, 1, 2, 3, 4. Så circumflex ˆ betyder “alt andet end” tegnene som følger den.

Databasestøttet Webpublicering8 Eksempler på mønstre [A-Za-zÆØÅæøå] : matches af ethvert dansk bogstav [0-9][0-9] : matches af 2 decimale cifre (incl. Foranstillet nul [’0’] ) (hi|hello) : matches af de 2 strenge hi og hello ((a|b)a)* : matches af aa, ba, aaaa, baaa,... (0|1)+ : matches af binære tal dvs., 0, 1, 01, 11, ,..... : matches af 2 vilkårlige tegn (red|green|blue) : matches af farverne red, green and blue ([1-9][0-9]*)/([1-9][0-9]*) : matches af heltals kvotienter, f.eks., 1/8, 32/5645, 45/6,... Matcher strengen 012/54 det sidste mønster? Matcher strengen 2/0 match det sidste mønster?

Databasestøttet Webpublicering9 PHP funktionen ereg Den indbyggede funktion ereg kan anvendes til at bestemme om et mønster m matches af en delstreng af en streng s. Et kald til ereg(m,s) returnerer 1 (TRUE) hvis mønsteret m matches af en delstreng af s. Ellers returnerer den 0 (FALSE). Hvis mønsteret m begynder med ‘^’ skal den matchende delstreng være et prefix af s, dvs., begynde ved det første tegn af s. Tilsvarende, hvis mønsteret m afsluttes med et ‘$’ skal den matchende delstring være et suffix af s. Eksempler: Funktionskald: Resultater: ereg(’[0-9]+’, "aa38AA") 1 ereg(’^[0-9]+’, "aa99") 0 ereg(’^[0-9]+’, "77AA")1 ereg(’^[0-9]+$’, "aa87AA")0 NotaBene: Vi vil som hovedregel anvende ^ og $ som det første og sidste tegn i mønstret, når man validerer bruger input Vi vil angive strengmønstre i PHP med ’...’ for at undgå den specielle betydning af $ i strenge af formen "..."

Databasestøttet Webpublicering10 Eksempler på brugen af PHP funktionen ereg FunktionskaldResult ereg(’[a-zA-Z]+’, "Allan Hansen") _____ ereg(’^[a-zA-Z]+$’, "Ulla Jensen")_____ ereg(’^[a-zA-Z]+$’, "")_____ ereg(’^[0-9][0-9]-[0-9][0-9]-[0-9]+$’, " ")______ ereg(’^[0-1][0-9]-[0-3][0-9]-[0-9]+$’, " ")______ ereg(’^(red|green|blue)$’, "red")_______ ereg(’^(red|green|blue)$’, "redblue")_______ ereg(’^(a|bb)*b$’, "bbab")_______ ereg(’^(a|bb)+b*$’, "b")_______

Databasestøttet Webpublicering11 Eks. :Webprogrammet pattern.php Vi bygger en ”mønster-matcher” til at eksperimentere med mønstre--pattern.php: Pattern matcher <? $r =$_POST[’r’]; $s =$_POST[’s’]; if ( $r != "" ) { if ( ereg("^($r)\$", $s) ) { echo " Success: The string ’$s’ matches pattern ’$r’ "; } else { echo " Failure: The string ’$s’ does NOT match pattern ’$r’ "; } echo " Pattern: String: ";?> Note:Vi anvender funktionen ereg til at bestemme om en streng matcher et mønster

Databasestøttet Webpublicering12 Forbedring af valutaveksling med validering af formvariablen Vi kan forbedre vores ”vautaveksler” ved validering af bruger-input—exchange2.php: Currency Exchange Service Currency Exchange Service (version 2) <? $kroner = $_POST [’kroner’]; if ( ereg(’^(0|[1-9][0-9]*)$’, $kroner) ) { $rate = 8.43; $commission = 20.0; if ( $kroner > $commission ) { $dollars = ($kroner - $commission) / $rate; $dollars = number_format($dollars, 2, ",", "."); echo "In exchange for kr. $kroner you will receive \$$dollars"; } else { echo "You cannot change an amount less than the commission!"; } } else { echo "Please go back and enter a number!"; } ?> // Spørgsmål: //Hvordan reagerer programmet på forskellige slags bruger input?

Databasestøttet Webpublicering13 Funktion til at undersøge adresser Vi kan undersøge om en indtastet adresse har den forventede form ved at anvende mønsteret: Den følgende funktion tager en streng som argument og undersøger om strengen ser ud som en adresse: function chk_ ( $ ) { if ( $ ) == 0 ) { error("You must enter a valid address"); } } // Note: Funktionen garanterer ikke, at adressen eksisterer! Vi anvender en generisk funktion error til at vise en fejlmeddelelse: function error ( $msg ) { echo " Error: $msg "; exit; // Don’t continue the script! } Den eksakte definition af adresse kan findes i RFC2822 på

Databasestøttet Webpublicering14 Et bibliotek af funktioner til validering af form-variable Vi kan konstruere en fil formvars.php som indeholder en liste af funktioner til validering af form-variable Derefter kan vi inkludere filen formvars.php (anvend include function) i scripts som læser form-variable. På denne måde bliver det let at validere form-variable. Eksempel: exchange3.php Currency Exchange Service Currency Exchange Service (version 3) <? $kroner = $_POST= [’kroner’]; $rate = 8.43; $commission = 20.0; if ( $kroner > $commission ) { $dollars = ($kroner - $commission) / $rate; $dollars = number_format($dollars, 2, ",", "."); echo "In exchange for kr. $kroner you will receive \$$dollars"; } else { echo "You cannot change an amount less than the commission!"; } ?>

Databasestøttet Webpublicering15 Biblioteksfunktioner til validering af form-variable—fortsat Filen formvars.php: <? function error ( $msg ) { echo " Error: $msg "; exit; // Don’t continue the script! } function chk_ ( $ ) { if ( $ ) == 0 ) { error("You must enter a valid address"); } function chk_integer ( $number ) { if ( ereg(’^(0|[1-9][0-9]*)$’, $number) == 0 ) { error("You must enter an integer number"); } } ?>

Databasestøttet Webpublicering16 Andre anvendelser af regulære udtryk Regulære udtryk kan også anvendes til andre opgaver end evaluering af input fra brugere Eksempler: Til at finde mønstre i en tekst Søg og erstat i en tekst Hente data fra fremmede web-sites: I web-teknologi, kan regulære udtryk bruges til at finde relevant information i tekst, som downloades automatisk fra Internettet, f.eks.: Dagens nyheder fra Reuters Valutakurser Aktiemarkedets kurser, indeks og bevægelser Vejrudsigten Pollental

Databasestøttet Webpublicering17 Hent data fra fremmede web-sites med PHP som værktøj Den følgende funktion kan anvendes til at ”loade” en fremmed web-site i en streng til PHP: function fetchurl ( $url ) { $fp = fopen($url, ’r’); if ( ! $fp ) return "No page"; for ($t = "" ; !feof($fp) ; ) $content.= fread($fp, 8192); fclose($fp); return $content; } ereg funktionen kan også anvendes til at udtrække information fra en hjemmeside indeholdt i en streng. Hvis man giver ereg et ekstra argument $result, delstrengen som matcher den n te del (i parentes) af mønstret, som er gemt i $result[n]. Når man kalder funktionen ereg($p,$txt,$result) er de 3 argumenter: $p er mønstret, som skal matches teksten for at finde forekomster $txt er teksten i hvilken en delstreng som matcher mønstret er søgt $result er resultatet, en tabel som indeholder den tekst, som matchede, returværdi fra funktionen ereg

Databasestøttet Webpublicering18 Eksempel: World population- popclock.php World Population Watch World Population Watch <? function fetchurl ( $url ) { $fp = fopen($url, ’r’); if ( ! $fp ) return "No page"; for ($t = "" ; !feof($fp) ; ) $content.= fread($fp, 8192); fclose($fp); return $content; } $content = fetchurl(" bin/ipc/popclockw"); ereg(" ([0-9,]+) ",$content,$result); echo "There are at present $result[1] people in the world."; ?>

Databasestøttet Webpublicering19 Introduktion til øvelser 5 Til øvelserne skal du: Træne i regulære udtryk. Konstruere en forbedret version af BMI (body mass index web service). Konstruere en dollar-valuta-vekslingstjeneste, som udtrækker kursen fra en fremmed web-site og tilbyder ombytning af kroner til dollars og omvendt. Præsentere et brugbart automatisk udtræk af information fra en eller flere web-sites på Internettet og implementere en web-tjeneste, som udnytter denne information — vejrudsigt (rapport fra DMI), aktie markedets index, pollental,...