Webformularer, PHP og databaser

Like dokumenter
Systemarkitektur. Webformularer, PHP og databaser. Hva skal applikasjonsprogrammet gjøre? PHP. Ta i mot data fra brukergrensesnittskjermbildet

INF1050-php-2. Databasenavn. Institutt for informatikk Gerhard Skagestein 23. februar /~brukernavn/ maskinnavn PHP. Internet Explorer, Opera...

Systemarkitektur. Webformularer, PHP og databaser et crash-kurs. Hva skal applikasjonsprogrammet gjøre? PHP

Systemarkitektur. Webformularer, PHP og databaser et crash-kurs. Hva skal applikasjonsprogrammet gjøre? PHP

Webformularer, PHP og databaser et crash-kurs

Webformularer, PHP og databaser

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

}?> <!DOCTYPE... <html xmlns=" <head>... </head> <body> <p>nå skal vi printe hallo:</p> <?php //funksjonskall

Webprogrammering høsten 2017

Tilgjegelighet av XHTML-forms

Innhold. Innledning... 13

Universitetet i Oslo Institutt for informatikk. avmystifisert i INF102. Kvile

Aritmetiske operasjoner. Litt om forrige times øvelsesoppgaver

Verdier, variabler og forms

Dette er en demonstrasjonsside som vi skal bruke for å se litt nærmere på HTTP protokollen. Eksemplet vil også illustrere et par ting i PHP.

Når en bruker skriver sitt navn ("Ole") i et form-element med name="fornavn" som attributt. klikker på submit-knappen

SVARFORSLAG : Eksamen i IBE102 Webutvikling Våren 2017.

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

HØGSKOLEN I SØR-TRØNDELAG

INF130 Datahåndtering og analyse

Eksamen i Internetteknologi Fagkode: IVA1379

JSP - 2. Fra sist. Hvordan fungerer web? Tjenerside script HTML. Installasjon av Web-tjener Et enkelt JSP-script. Ønsker dynamiske nettsider:

</html> </head> <form action= rtkst.php > <p> Fornavn? <input type= text name= fornavn <input type= submit />

HTML og relasjonsdatabaser med PHP

InfoRed Publisering. - produktbeskrivelse. TalkPool WebServices Postboks Åneby

Huldt & Lillevik Ansattportal. - en tilleggsmodul til Huldt & Lillevik Lønn. Teknisk beskrivelse

<?php. count tar en array som argument, og returnerer et tall som uttrykker antallet innførsler i arrayen.

Del 1 En oversikt over C-programmering

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

6105 Windows Server og datanett

Python: Variable og beregninger, input og utskrift. TDT4110 IT Grunnkurs Professor Guttorm Sindre

6105 Windows Server og datanett

Opphavsrett: Forfatter og Stiftelsen TISIP

INTRODUKSJON HVEM ER DETTE FAGET FOR?...

1.2 Dynamiske, tjenerbaserte og interaktive nettsteder

while-løkker while-løkker gjentar instruksjonene så lenge en betingelse er oppfylt Eksempel 1: en enkel while-løkke

Web-programmering med JSP Løsningsforslag leksjon 3

Utvikling fra kjernen og ut

Et forsøk på definisjon. Eksempel 1

Utførelse av programmer, funksjoner og synlighet av variabler (Matl.)

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Gruppe prosjekt del 3. INFO134 Klientprogrammering Vår 2017 Kandidatnummer: 304, 298

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Innføring i bruk av CGI4VB

Kapittel 1 En oversikt over C-språket

EKSAMEN (Konvertert fra en gammel PHP-eksamen)

EKSAMEN (Konvertert fra en gammel PHPeksamen)

Web-programmering med JSP Løsningsforslag leksjon 4

Løse reelle problemer

Utvikling fra kjernen og ut

Shellscripting I. Innhold

Å lage Noark 4 uttrekk selv. Thomas Sødring thomas.sodring@jbi.hio.no /

HØGSKOLEN I SØR-TRØNDELAG

Et forsøk på definisjon. Eksempel 1

ITGK - H2010, Matlab. Repetisjon

HØGSKOLEN I SØR-TRØNDELAG

Applikasjonsutvikling med databaser

EKSAMEN. Emne: Webprogrammering med PHP (kont.) Webprogrammering 1 (kont.) Eksamenstid:

Beskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015

En enkel innføring i ASP

En enkel while-løkke. 1 of :28. 2 of :28. while-løkker gjentar instruksjonene så lenge en betingelse er oppfylt

Utførelse av programmer, metoder og synlighet av variabler i JSP

som blanker skjermen (clear screen). Du får en oversikt over alle kommandoene ved å skrive,

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Databaser kort intro. Tom Heine Nätt

Innføring i bruk av CGI4VB

Kap 3: Anvendelser av Internett

EKSAMEN. Emne: Webprogrammering med PHP (kont.) Webprogrammering 1 (kont.) Eksamenstid:

lagring med HTML5 Offline lagring Offline Informasjonsteknologi 2 Gløer Olav Langslet Sandvika VGS

Maps og Hashing. INF Algoritmer og datastrukturer. Map - ADT. Map vs Array

Python: Variable og beregninger, innlesing fra tastatur utskrift til skjerm. TDT4110 IT Grunnkurs Professor Guttorm Sindre

MAT1030 Diskret Matematikk

Høgskoleni østfold EKSAMEN

INF Algoritmer og datastrukturer

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Tuva Kristine Thoresen

TDT4110 IT Grunnkurs Høst 2015

Maps og Hashing. INF Algoritmer og datastrukturer. Map - ADT. Map vs Array

MAT1030 Plenumsregning 1

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

Kapittel 11. Databasesikkerhet

EKSAMEN ITF Webprogrammering 1 Dato: Eksamenstid: Hjelpemidler: 2 A4 ark (4 sider) med egenproduserte notater (håndskrevne/maskinskrevne)

Plenumsregning 1. Kapittel 1. Roger Antonsen januar Velkommen til plenumsregning for MAT1030. Repetisjon: Algoritmer og pseudokode

Her er eksamenssett fra Vår '09. Av Robin Sværen og Simen Arvesen.

Eksamen i Internetteknologi Fagkode: ITE1526

Transkript:

PHP-arkitektur Webformularer, PHP og databaser Jfr Fra kjernen og ut, fra skallet og inn Appendix B WWWklient Netscape, Internet Explorer, Opera Dynamisk web-side bygges opp på grunnlag av spørring mot databasen HTTP/ PHP WWWtjener http:// wwwifiuiono /~brukernavn/ SQL Database Databasetjener (Oracle) delphiniumifiuiono IFIORA INF102-php-1 INF102-php-2 PHP WWW, forespørsel og respons PHP er et skriptspråk designet for å kunne utvikle dynamiske websider Nettleser Responsen tolkes og vises av nettleseren PHP kan i en webside brukes side om side med HTML En HTML-side og et PHP-skript skiller seg fra hverandre på et viktig punkt: http://wwwifiuiono /inf102/indexhtml html filtype html-kodet tekst eller binærfil HTML leses og interpreteres på klient-siden, mens PHP leses og interpreteres på webtjeneren web-tjener wwwifiuiono /inf102/indexhtml INF102-php-3 INF102-php-4

Vanlig HTML-fil På filen ~inf102/php/helloworldhtml <html> HTML-fil med innbakt PHP På filen ~inf102/php/helloworldphp <html> <title>php Hello World</title> <title>php Hello World</title> <h1>hello World</h1> Hello World <h1>hello World fra PHP</h1> print("hello World ); INF102-php-5 INF102-php-6 Hva skjer? Når vi gjennom en nettleser aksesserer en webside med PHP-kode, vil følgende skje: Tjeneren mottar forespørsel fra klienten Websiden letes opp på tjeneren Tjeneren utfører instruksjonene i PHP-koden, og eventuelle utskrifter blir integrert i websiden Websiden sendes tilbake over nettet til nettleseren For nettleseren vil siden se ut som en helt vanlig HTML-kodet side INF102-php-7 HTML-fil med innbakt PHP På filen ~inf102/php/sirkelomkretsfastphp <title>php sirkelberegning</title> <H1>PHP sirkelberegning</h1> define("pi","31415"); $radius = 05 ; $omkrets = 2 * $r * PI; print("omkrets er "$omkrets); INF102-php-8

PHP-språket define("pi","31415"); // definisjon av en konstant // deklarer og initialiser $r $radius = 05 ; // deklarer og initialiser $radius // type-casting // skriv en streng $omkrets = 2 * $r * PI; // beregn $omkrets print("omkrets er "$omkrets); // skriv en streng PHP-språket Definere konstanter: define("pi","31415926535897932"); Det er vanlig å bruke store bokstaver for konstant-navn Variable: Variabelnavn begynner alltid med tegnet $ Variabelen opprettes første gang den nevnes Tilordning skjer ved hjelp av tilordningsoperatoren = Eksempel: $radius = 10; Aritmetiske uttrykk: Eksempel: 2 * $radius * PI; Skjøte sammen tekststrenger: Sammenskjøtingsoperatoren (punkt) INF102-php-9 INF102-php-10 PHP-språket IF-setninger PHP-språket Løkker IF-setninger if (INSTITUTT == "Ifi") { print ("Institutt for informatikk"); FOR-løkker for ( $i = 1; $i <= $antall; $i++ ) { WHILE-løkker if (INSTITUTT == "Ifi") { print ("Institutt for informatikk"); else { print ( Et annet institutt ); while ($antall < 15) { $antall = $antall + 1; INF102-php-11 INF102-php-12

Vanlige og assosiative arrayer PHP-arrayer kan indekseres både med heltall (som i andre språk) og med tekststrenger ( nøkler ) Vanlig array $vanligarray = array(6, 13, 'Per', 'Gro', 314); $vanligarray[5] = 271; $element3 = $vanligarray[3]; // tilordner verdien Gro Assosiativt array $assarray = array('etternavn'=>'dal', 'fornavn'=>'gro'); $assarray['adresse'] = 'Nygaten 123' ; $fornavn = $assarray['fornavn']; // tilordner verdien 'Gro' Blandingsform $blandingsarray = array(6, 13, 'fornavn'=>'per', 314); elementene i et assosiativt array består av key - value -par Tekststrenger Tekststrenger avgrenses med apostrof ' eller anførselstegn " o Ved bruk av ' bearbeides ikke tekststrengen o Ved bruk av " bearbeides tekststrengen, for eksempel konverteres \n til symbolet for linjeskift Hvis tekststrengen inneholder avgrensningssymbolet, må escape-symbolet \ settes inn i forkant: print("\" Jeg elsker deg!\", sa han"); For å unngå escape-symbolet, bruk (hvis det lar seg gjøre) avgrensningssymboler som ikke forekommer i tekststrengen: print("'jeg elsker deg!', sa han"); print('"jeg elsker deg!", sa hun'); INF102-php-13 INF102-php-14 Hente parametre fra brukeren På filen ~inf102/php/sirkelomkretsphp <html> <title>php sirkelberegning</title> <H1>PHP sirkelberegning</h1> define("pi","31415"); $radius = $_GET['radius']; $omkrets = 2 * $r * PI; print("omkrets er "$omkrets); Inndataene legges i det assosiative arrayet $_GET OBS! http:// /formhtml Webformularer, parametre og scripts webklient webtjener html-tekst med Form send skjermbilde http://?parametre webklient html-tekst med svar webtjener Script Database INF102-php-15 INF102-php-16

Et enkelt webformular HTML-kode for webformularet GET På filen ~inf102/php/sirkelformhtml <HEAD> <TITLE>Sirkelformular</TITLE> </HEAD> <BODY> <H1>Beregning av omkretsen til en sirkel</h1> <FORM METHOD="GET" ACTION="sirkelomkretsphp"> Skriv inn radius <INPUT TYPE="TEXT" SIZE = "10" NAME="radius"> <INPUT TYPE="SUBMIT" VALUE="Beregn omkrets"> <INPUT TYPE="RESET" VALUE = "Tøm inndatafelt"></p> </FORM> <I>Laget av Gerhard Skagestein 20 januar 2003 for INF102</I> </BODY> </HTML> Sirkelomkretsphp $radius=$_get['radius']; sirkelomkretsphp?radius= INF102-php-17 INF102-php-18 HTML-kode for webformularet POST På filen ~inf102/php/sirkelformposthtml <HEAD> <TITLE>Sirkelformular</TITLE> </HEAD> <BODY> <H1>Beregning av omkretsen til en sirkel</h1> <FORM METHOD= POST" ACTION="sirkelomkretspostphp"> Skriv inn radius <INPUT TYPE="TEXT" SIZE Inndataene = "10" legges i NAME="radius"> det assosiative <INPUT TYPE="SUBMIT" VALUE="Beregn omkrets"> arrayet $_POST <INPUT TYPE="RESET" VALUE = "Tøm inndatafelt"></p> </FORM> <I>Laget av Gerhard Skagestein 20 februar 2002 for INF102</I> </BODY> </HTML> Sirkelomkretspostphp $radius=$_post['radius']; sirkelomkretspostphp HTML-formular og PHP på samme fil // ligger på sirkelberegningphp define("pi","31415926535897932"); if(isset($_post['radius']))$radius = $_POST['radius']; else $radius = 0; $omkrets = 2 * $radius * PI; $resultat = "Omkrets er "$omkrets; <HTML> <HEAD> <TITLE>PHP sirkelberegning</title> </HEAD> <BODY> <H1>Beregning av omkretsen til en sirkel</h1> <FORM METHOD=POST ACTION="sirkelberegningphp"> Skriv inn radius <INPUT TYPE="TEXT" SIZE = "10" NAME="radius" VALUE= print($radius); > <INPUT TYPE="SUBMIT" VALUE="Beregn omkrets"> <INPUT TYPE="RESET" VALUE = "Tøm inndatafelt"></p> </FORM> print($resultat); <I>Laget av NN dato</i> </BODY> </HTML> INF102-php-19 INF102-php-20

Sessions Hvordan overføre data fra en klient-tjener-interaksjon til den neste: Åpne en session med funksjonskallet session_start( ); Meld inn variable hvis verdier skal overføres: session_register('bruker'); session_register('passord'); Gjør variablene og deres verdier tilgjengelig i andre tjenerprogrammer med session_start( ); En session varer til nettleseren tas ned eller til timeout PHP mot databaser De fleste skriptspråk tilbyr god støtte for kobling mot databaser PHP har støtte for bla MySQL og Oracle Innebygde funksjoner for kobling mot Oracle o OCILogon o OCILogoff o OCIExecute o Dataene ligger på et beskyttet område på tjeneren pekeren til dette området overføres ved hjelp av en cookie INF102-php-21 INF102-php-22 Kjekt å ha på dbinc authenticate() setter opp en dialogboks der brukeren blir invitert til å skrive inn brukernavn og passord Verdiene legges i $bruker og $passord som er registrert i en session $conn = baselogon($bruker, $passord) logger inn i databasen IFIORA som brukeren $bruker med $passord Funksjonen vil returnere en kobling mot databasen ($conn) baselogoff($conn) vil stenge koblingen $conn og logge ut av databasen $stmt = basequery($conn, $query) sender SQL-spørringen $query til databasen med koblingen $conn Returnerer en peker til en buffer med resultatet av spørringen ($stmt) byggupdatequery, bygginsertquery, byggdeletequery funksjoner for å bygge SQL-spørringer (se dokumentasjon) INF102-php-23 Kjekt å ha på guiinc $html = function lagselectmeny($nokkel, $nrows, $results) returnerer HTML-kode for en nedtrekksmeny $html = function vistabell($stmt, $pkattributter) returnerer HTML-kode for å vise fram tabellen som ligger i spørreresultatet $stmt $html = function vistabellmedlink($stmt, $pkattributter, $hreffil) returnerer HTML-kode tilsvarende vistabell, men med en ekstra kolonne med en aktiv link til en web-side $hreffil $html = function lagoppdateringsformular($stmt, $pkattributter) returnerer HTML-kode som lager et formular som gjør det mulig å endre, legge til, eller fjerne linjer i tabellen som ligger i spørreresultatet $stmt $html = function laginnleggingsformular($stmt, $pkattributter) returnerer HTML-kode som lagoppdateringsformular, men med tomme felter INF102-php-24

Eksempel på SQL-spørring med etterfølgende fremvisning include "inc/dbinc"; include "inc/guiinc"; session_start( ); $query = "SELECT fylkenr, fylkenavn FROM Fylke ORDER BY fylkenavn"; print($query); $conn = baselogon($bruker, $passord); // Sender query til databasen, resultatet legges i $stmt// $stmt = basequery($conn, $query); baselogoff($conn); // formater en vakker html-tabell av resultatet // $html = vistabell($stmt, array('fylkenr')); print($html); INF102-php-25