Föreläsning 4 Serverskript PHP Validering av data med serverskript Formulär

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

TDP013 Node.js, JSCoverage, Mocha. Marcus Bendtsen Institutionen för Datavetenskap

Webbprogrammering - 725G54 PHP. Foreläsning II

Webbprogrammering. Sahand Sadjadee

Avancerade Webbteknologier

Elektronisk publicering TNMK30

Förra gången. jquery Lab 4 Muddy Cards resultat.

Introduktion HTML och PHP 732G16 Databaser design och programmering

PHP. TNMK30 - Elektronisk publicering

Karlstads Universitet, Datavetenskap 1

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

PHP. Dynamiska webbsidor

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Introduk+on +ll programmering i JavaScript

Användarhandledning Version 1.2

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er

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

Grundläggande datalogi - Övning 1

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

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

Visual Basic, en snabbgenomgång

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

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

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Lektion 5 HTML, CSS, PHP och MySQL

PHP. PHP: Hypertext Preprocessor

Föreläsning 2 Programmeringsteknik och C DD1316

Introduk+on +ll JavaScript if- sats, funk+oner, bilder

Planering av ett större program, del 2 - for och listor. Linda Mannila

Klassdeklaration. Metoddeklaration. Parameteröverföring

Tentamen i Introduktion till programmering

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

DOM (Document Object Model) är modellen efter vilken en webbläsaren är uppbyggd. Alla objekt/element i webbläsaren finns hierarkiskt ordnade i DOM.

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Modul 8 Hantering av indata

JAVASCRIPT. Beteende

TDP013. Node.js, Mocha, Istanbul. Anders Fröberg Institutionen för Datavetenskap

Läsöversikt. Föreläsningar 2-6. Genomförande av laborationer

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

TDP013. Webbprogrammering och interaktivitet. AJAX, CORS & jquery. Marcus Bendtsen Institutionen för Datavetenskap (IDA)

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Introduktion till PHP

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

Webbservrar, severskript & webbproduktion

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

JavaScript del 3 If, Operatorer och Confirm

Webbprogrammering TDDD52

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

Uppgifter teknik HT17 (uppdaterad v. 40)

Laboration: Whitebox- och blackboxtesting

INTRODUKTION TILL ANGULAR JS

Labora&on 8 Formulär övningar/uppgi6er

Planering Programmering grundkurs HI1024 HT 2014

TNMK30 Elektronisk publicering HT 2014 Laboration 5: PHP och MySQL

Elektronisk publicering TNMK30

Kurslitteraturen. C-nivå Villkorssatser [kap 8] if & elif & else and & or Loopar [kap 9] for

F8 Webbteknologier 2. PHP PHP: Hypertext Preprocessor

Planering Programmering grundkurs HI1024 HT TIDAA

Att bygga enkla webbsidor

Variabler och konstanter

Innehålls förteckning

Exempel: Exempel: Exempel: Exempel: $djur=array("ko","katt","älg"); foreach ($djur as $d) { echo $d. " "; } Resultat. ko katt älg

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Imperativ programmering. Imperativ programmering konstruktioner i Lisp. Datastrukturer (kap ) arraystruktur poststruktur

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

On-line produktion TDDC61

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Föreläsning 3: Booleans, if, switch

Repetition C-programmering

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

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

Föreläsning 3-4 Innehåll

Innehåll. PHP Grundkurs. Introduktion till PHP. Kurslitteratur. Webbserver. Lite historik. PHP Grundkurs 1

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Laboration 6 Formulär och stränghantering övningar/uppgifter

Introduktion till användning av linux-servern sledge och några övningsuppgifter

Kodexempel från Programmering 2 Tobias Wrigstad, Ph.D.

729G04 Programmering och diskret matematik. Föreläsning 7

Laboration 1 Introduktion till Visual Basic 6.0

Introduktion C-programmering

Kursplanering Utveckling av webbapplikationer

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

DD1314 Programmeringsteknik

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

Funktioner. Linda Mannila

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

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

729G74 IT och programmering, grundkurs. Tema 2. Föreläsning 3 Jody Foo,

ASP.NET MVC. Copyright Mahmud Al Hakim Innehåll

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

Att skriva till och läsa från terminalfönstret

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

WCMS-15, Webbutvecklare CMS

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Transkript:

TDDD52 PHP

Föreläsning 4 Serverskript PHP Validering av data med serverskript Formulär

Återblick HTML Seman@k Uppdelning Länka dokument CSS Layout och styling Användarvänlighet Javascript Validering Animering Extra dimension

Progressive Enhancement

HTML, CSS, Javascript - Klienten

Användare fyller i formulär. Annons visas på hemsidan. Vem skapar HTML, CSS och Javascript för annonssidan?

Söker på ordet bike, så listas bilder och text. Hur skapades den här listan? Vem skrev HTML, CSS och Javascript? Hur visste de as jag skulle söka på bike? Finns det färdiga HTML sidor för alla tänkbara nyckelord?

Om det här företaget vill lägga @ll två nya produkter, måste vi då skapa HTML för dessa? Vad om vi vill lägga @ll 1000 produkter? Tänk om vi vill ändra i vår sidhuvud eller sidfot på sidan, ska vi göra det på alla sidor då?

Det saknas något Det räcker alltså inte med as kunna HTML, CSS och Javascript för as uppnå det dynamiska som oya visas på webbplatser idag. Men webbläsaren förstår inget annat än HTML, CSS och Javascript.?

Vi behöver någon@ng som kan dynamiskt skapa HTML åt oss, för as bygga upp nöten

Såhär ser det ut idag, klienterna hämtar dokument som de i sin tur exekverar. Klient 1 #Rydsvägen Klienterna känner inte @ll varandra. Vet inte as de existerar. Servern gör inget förutom as @llhandahålla sta@ska dokument. Server #LiU Klient2 #Hamngatan Hämta HTML, CSS, Javascript

PHP Hypertext Pre Processor Stort, populärt och läs as komma igång med hsp://php.net Delar av Wikipedia, Facebook, Digg etc skrivet med PHP

PHP Skrivs @llsammans med HTML i es.php dokument Kan användas med databaser, filer, etc etc. PHP, Java, C#, Python, Ruby, Perl, Scala, Go, etc etc I denna kurs använder vi PHP

Serverskript Server @ll Klient Kod som skrivs för as köras på servern. EYersom koden exekveras på servern så tar det av serverns kray, och inte klienten. Resultatet av körningen skickas @ll klienten (webbläsaren) PHP kod tolkas och exekveras på servern. Servern genererar HTML med hjälp av PHP och skickar resultatet @ll klienten. HTML kod tolkas av webbläsare på klienten Server Klient

Klient Server Med PHP ger vi servern möjlighet as göra mer än bara dela med sig av dokument. Servern kan nu ha logik och data för as skapa olika vyer. Nu kan servern manipulera HTML dokument för as skapa räs vy. Ingen PHP kod returneras från servern, eyersom webbläsare inte förstår PHP kod.

Var skrivs dokumentet ut? Javascript Om jag i koden skickar es dokument @ll skrivaren, så skrivs det ut på klienten. PHP Om jag i koden skickar es dokument @ll skrivaren, så skrivs det ut på servern. Tänk på desa om ni tappar bort er i klient/server kod

PHP Syntax Snabb genomgång

PHP Typer etc. Dynamiskt typat, man behöver inte bestämma vad som skall finnas i en variabel vid ini@eringen. $variable1 = 1; $variable2 = Hello ; $variable3 = 1.2; $variabel4 = TRUE; Vanliga aritme@ska opera@oner för tal. +, -, *, /, %, ++, -- Strängar kan vara inom eller Hello world, Hello World $var = great print Hello $var world ; //skriver ut Hello great world print Hello $var world ; //skriver ut Hello $var world Strängar kan säsas samman och använda { för specifik bokstav. Jämförelser görs med de vanliga operatorerna. === och!== tar även hänsyn @ll typ. Kombinerade jämförelser görs med and, or, xor,!, && och (xor innebär as endast es av operanderna måste vara TRUE) $var = Hello. World ; print $var{5; //Skriver ut W >, <, >=, <=,!=, ==, ===,!== 5 == 5 //Detta är TRUE 5 === 5 //Detta är FALSE 5 === 5 //Detta är TRUE 5 == 5 && 5 === 5 //Detta är FALSE 5 == 5 5 === 5 //Detta är TRUE

PHP Kontrollstrukturer selec@on if($a == $b) { else if ($a == $c) { else { loop $var = 10; $count = 0; while($var!= $count) { $count++; for($iter = 0; $iter < 10; $iter++) { Finns några @ll, så som switch och do- while men dessa är oyast överflödiga, det räcker med if- elseif- else, while och for

PHP - Arrayer Skapandet av array $list[] = 15; eller $list[0] = 15; eller Lägg @ll es nys element i våran array $list = array(15,16,17,18) $list[] = 16; //Lägger till på nästa plats eller $list[1] = 16; //Lägger till på position 1 Men arrayer kan även användas som maps $ages = array( Joe => 42, Mary => 41) print $ages[ Mary ]; //Skriver ut 41 eller Ta bort es element ur en array Leta upp dessa funk@oner på nätet och läs på: $ages[ Mary ] = 41; print $ages[ Mary ]; //Skriver ut 41 unset($list[1]) array_keys, array_values, array_key_exists, sizeof, explode, implode, array_push, array_pop

PHP Arrayer - Exempel Loopa över en array $lows = array( Mon => 23, Tue => 18, Wed => 27); print( <h1>temps</h1> ); foreach($lows as $day => $temp) { print( The low temperature on $day was $temp <br /> ); Exekveras och levereras som HTML @ll klienten Temps The low temperature on Mon was 23 The low temperature on Tue was 18 The low temperature on Wed was 27

PHP Mul@dimensionella Arrayer Arrayer kan användas @ll mycket i PHP, och es exempel är en mul@dimensionell array. Det kräver dock lite träning på as skriva denna typ av kod eyersom det snabbt blir rörigt: $data = array( 1 => array( "firstname" => "Marcus", "lastname" => "Bendtsen" ), 2 => array( "firstname" => "Jalal", "lastname" => "Maleki" ) ); //Nu kan vi nå Marcus med: $data[1]["firstname"];

PHP - Funk@oner För as kunna öka abstrak@on och återanvändning finns det funk@oner. Funk@oner liknar Javascript syntax, med parametrar och argument. print_hello_world( Marcus ); function print_hello_world($name) { print Hello World, $name ; Kan definieras var som helst i koden, dvs anropet @ll en funk@on kan komma innan funk@onen är definierad.

PHP Hantera mer än 1 PHP fil include och require

PHP include, require, require_once in.php <?php echo included ;?> <?php include( in.php ); echo Done ;?> included Done included included included Done <?php include( in.php ); include( in.php ); include( in.php ); echo Done ;?> <?php include( out.php ); echo Done ;?> PHP Warning: include(out.php):... Done Inkludera es PHP dokument i es annat. Ovärderligt när man gör större webbplatser där man vill dela upp koden.

PHP include, require, require_once in.php <?php echo included ;?> <?php require( in.php ); echo Done ;?> included Done included included included Done <?php require( in.php ); require( in.php ); require( in.php ); echo Done ;?> <?php require( out.php ); echo Done ;?> PHP Warning: include(out.php):... require är precis som include, men om den misslyckas så avbryts körningen.

PHP include, require, require_once in.php <?php echo included ;?> <?php require_once( in.php ); echo Done ;?> <?php require_once( in.php ); require_once( in.php ); require_once( in.php ); echo Done ;?> <?php require_once( out.php ); echo Done ;?> included Done included Done PHP Warning: include(out.php):... require_once garanterar as vi bara hämtar dokumentet en gång.

PHP Formulär och Länkar

Serverskript Klient @ll Server Klienten fyller i formulär, eller klickar på länk. Servern tar emot data från klienten, och kan göra logiska beslut baserat på indata. Data kan sparas, eller olika vyer visas beroende på vad klienten har skickat. Formulär fylls i och skickas. Eller länk klickas. PHP kod kan ta emot skickade uppgiyer och agera på dessa. Klient Server

Ta emot data GET parameter GET För kort data via formulär eller när man vill skicka data via URL HTML <form acnon= ta_emot.php method= GET > <input type= text name= myvalue /> <input type= submit >Send</input> </form> hsp://www- und.ida.liu.se/~marbe800/ta_emot.php?myvalue=marcus hsp://www- und.ida.liu.se/~marbe800/product.php?id=1 PHP (ta_emot.php) $myvalue = $_GET[ myvalue ];

Ta emot data POST POST För lång data via formulär HTML <form acnon= ta_emot.php method= POST > <input type= text name= myvalue /> <input type= submit >Send</input> </form> PHP (ta_emot.php) $myvalue = $_POST[ myvalue ]; Om man vill kunna skicka data med URL er (dvs t ex:?id=1) så måste man använda GET, annars ska man all@d använda POST i TDDD52

Validering av data med PHP Vi har ju redan validerat data med Javascript? Javascript kan stängas av, ovetande eller med flit. Valideringen hos klienten är @ll för as spara @d för användaren och bandbredd för servern. Man måste all@d validera data på server sidan som man inte kan lite på och som kan ställa @ll problem om det inte sparas korrekt. T ex mejladresser (om vi sparar inkorrekta kommer vi inte kunna as nå personen igen). <?php func@on is_email($email) { //code that verifies email $email = $_GET( email ); if(is_email($email)) { echo success ; else { echo failure ;?>

Vad gör vi med validerad data? (Databaser kommande föreläsningar) Klient 1 #Rydsvägen 3. Vem finns? En server kan skapa en länk mellan klienter. 4. Marcus finns! 2. Spara info om Klient2 i en fil på servern. Server Klient2 #Hamngatan 1. Hej, jag heter Marcus

PHP Demo TDDD52

AS koda bra, hur gör man det? Intermezzo

Ta es steg bort från datorn, använd papper och penna eller whiteboard. Man får oya bra idéer och tankar som man vill testa. Skriva ner dessa direkt, så slipper ni stressa över as ni kanske glömmer de, eller as de stör det ni jobbar med just nu. Marcus kontor

Pseudo- code hämta variabler från användaren kolla att alla variablerna är korrekta jämför variablerna, och returnera det största AS skriva ner vad man vill åstadkomma med sin kod underläsar väldigt mycket. Om man kör fast är denna metod ovärderlig. Testa gärna av använda papper och penna, det aknverar hjärnan på ev annat säv. Kan avdrama@sera kodningen, aha är det bara det här jag ska göra...

Self- commen@ng code //Finds the maximum //of three numbers funcnon a($x, $y, $z) { if($x > $y) { if($x > $z) { return $x; else { return $z; else { if($y > $z) { return $y; else { return $z; funcnon max($x, $y, $z) { if($x > $y) { if($x > $z) { return $x; else { return $z; else { if($y > $z) { return $y; else { return $z;

Variabel namn Mindre bra alternanv $howbigistheship $drange $maximumpossiblescoreinoly mpiccurling $x, $y, $z, $x1, $x2... BäVre alternanv $shipsize $daterange? Variabel namn utan betydelse skapar väldigt fort förvirring.

Funk@oner - Abstrak@on if(...) { if(...) { for(...) { if(...) { for(...) { if(...) { if(...) { Om din kod börjar likna desa, så saknar du bra abstrak@on. Använd funk@oner för as klippa ut vissa for och if satser. Tänk på as du själv ska förstå koden om två veckor! if(...) { for(...) { dosomething(...)

Övning ger färdighet 1. Jobba med din kod som vanligt. 2. När du är klar, skriv ut koden på papper. 3. Läs koden några @mmar senare på kvällen. OYast kan man direkt se problem i koden, och även bra lösningar. AS koda är es hantverk och kräver mycket övning. Bra kod är läs as hantera och uppdatera. Kostnader för underhåll kan drama@skt sänkas om koden är välskriven.