HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL Kandidatnr: Eksamensdato: 11. mai 2004 Varighet: Fagnummer: Fagnavn: Klasse(r): 3 timer LV197D Webprogrammering med PHP FU Studiepoeng: 6 Faglærer(e): Svend Andreas Horgen tlf: 73 55 92 69 Hjelpemidler: Oppgavesettet består av: Alle skriftlige hjelpemidler 4 oppgaver, på totalt 6 sider (inkludert forsiden) Merknad: Oppgaveteksten kan beholdes av studenter som sitter eksamenstiden ut. Viktig: Les hele oppgaveteksten for hver oppgave før du setter i gang. Planlegg tiden godt. Hvis du føler det blir vanskelig å skrive kode, er det bedre å skissere logikken med pseudokode eller ord enn ikke å gjøre noe. Lykke til! Side 1 av 6
Oppgave 1 Behandling av skjema (11%) Et skjema har denne HTML-koden: <h1>personlig informasjon</h1> <form action="farge.php" method="get"> Hva er ditt navn? <input type="text" name="navn"><br> Din alder? <input type="text" name="alder" size="2"><br> Hva er din favorittfarge?<br> <input type="radio" name="favorittfarge" value="rød"> Rød er best<br> <input type="radio" name="favorittfarge" value="gul"> Gult er kult<br> <input type="radio" name="favorittfarge" value="grønn"> Grønt er skjønt<br> <p> <input type="submit" name="knapp" value="vis oppsummering"> </form> Lag et så enkelt script som mulig for å lage følgende oppsummering: Side 2 av 6
Oppgave 2 Filbehandling (25%) Lag et script som produserer tabellen vist til høyre basert på tekstfilen til venstre. Hint: Funksjonen trim($tekststreng) returnerer en tekststreng hvor alle mellomrom, \n, \t og liknende som er i starten og slutten av $tekststreng, er fjernet. Side 3 av 6
Oppgave 3 En handlekurvløsning 40% Du skal nå spille oppgaven som konsulent som har fått i oppdrag å lage en handlekurvløsning for en nyoppstartet nettbutikk som selger klær. Følgende krav er ønskelig: Den besøkende (heretter kunden) skal få listet opp varer i form av navngitte lenker, og kunne trykke på lenkene for å få mer informasjon om aktuell vare. Det skal også være en knapp ved siden av hver vare, og når den klikkes legges en ny forekomst av varen i kundens handlekurv. Nettstedet forventer høye besøkstall. Det eksisterer en database per i dag som skal brukes. Den har blant annet en tabell med navn varetabell med de navngitte feltene vareid, varenavn, pris, kategori og beskrivelse. Varene er strukturert etter tre ulike kategorier, nemlig kvinner, menn og barn. Anta at brukernavn er user, passord pass, og at host er localhost. Det er ikke tid til å lage hele systemet under denne eksamen, men du skal svare på følgende spørsmål (se neste side) Side 4 av 6
a) Skisser den koden i PHP som henter ut informasjon om de varene fra databasen som tilhører valgt kategori og lager et skjermbilde som vist under. Du skal ikke lage siden for å velge kategori, men får vite at kategorien er oppgitt i spørrestrengen kvinner i dette eksempelet. Et klikk på lenken skal lede til mer informasjon om den aktuelle varen (se oppgave b), mens trykk på knappen skal føre til at varen blir lagt til i kundens handlekurv (se oppgave c). b) Når lenken for en vare fra skjermbildet i oppgave a) ble klikket på, skal all informasjon om den vises. Lag et lite script som gjør dette. c) Når kunden legger varer i handlekurven, skal dette registreres. Gjentas dette flere ganger skal antallet øke. For å kjøpe tre kjoler må altså den øverste knappen trykkes tre ganger. For å sikre brukervennlighet skal trykk på knappen vise at varen er registrert, samtidig som samme side vises. Lag et script som realiserer dette. d) Hvilke sikkerhetsmessige aspekt er det viktig å tenke på i en slik løsning? Hvilke tiltak kan gjøres? Eksemplifiser. Side 5 av 6
Oppgave 4 Flervalgsoppgave (24%) Under finner du noen spørsmål og påstander. Kryss av for bare ett alternativ, det du vurderer til å passe best. For hvert riktig svar får du 2 poeng, for hvert galt svar får du -1 poeng, og krysser du av Vet ikke får du 0 poeng på spørsmålet. Du får ikke uttelling for å begrunne svarene dine. Riv ut denne siden og lever den sammen med resten av besvarelsen din, eller skriv opp oppgavenummer og ditt alternativ på form: X - c 1. Hva er riktig? a. Cookies er en nødvendighet for å få sessions til å fungere b. Cookies er spesifisert i protokollen HTTP c. Cookies lagres både på tjeneren og på klienten 2. Sikkerheten med sessions a. er avhengig av hvorvidt ID-ene kan holdes hemmelig b. fungerer bra siden ID-en er vanskelig å gjette c. er fullgod siden informasjonen lagres på tjeneren og ikke på klienten 3. Bruk av date("d", 1106042012) vil returnere a. dagen for tidspunktet 11.juni 2004 klokka 20:12 b. teksten Tue siden tallet i andre argument er et tidsstempel c. en feilmelding fordi andre argument er positivt 4. Vil bruk av cookies sikre at informasjon om en besøkende kan langtidslagres? a. ja, for nettlesere deler cookies seg i mellom b. nei c. ja, men det er ikke lurt å lagre sensitive opplysninger i cookies 5. PHP opererer ikke med datatyper! a. Riktig, for eksempel vil alt som overføres med GET være tekst b. Feil, men de deklareres ikke nødvendigvis eksplisitt c. Riktig, her skiller PHP seg fra de fleste andre programmeringsspråk 6. Hva skjer i denne koden? $i = 0; while ($i<12) { if ($i = 8) { echo $i*2; } else { echo $i; } $i++; } a. Alle tall mellom 0 og 11 skrives ut på en ny linje. b. 12345671691011 vises i nettleseren. c. Ingen av de to punktene over, i hvertfall! 7. En stor norsk nettavis vil at den besøkende skal bli opplyst om dagens dato. Dersom det er den 25. april 2004 og scriptet som forespørres har setningen echo date("i dag er det den d. M"). "<br>"; a. vil ikke programmereren ha oppnådd målet sitt b. vil teksten I dag er det den 25. april vises i nettleseren c. vil teksten I dag er det den 25. Apr vises i nettleseren 8. Hva er riktig? For at en funksjon skal kunne endre flere argumenter a. må kodeordet global brukes inne i funksjonen b. må argumentet overføres som referanse ved hjelp av & operatoren c. må flere return-setninger forekomme etter hverandre a b c Vet ikke Side 6 av 6