Eksamen i Internetteknologi Fagkode: IVA1379 m/løsningsforslag

Like dokumenter
Eksamen i Internetteknologi Fagkode: IVA1379

Eksamen i Internetteknologi Fagkode: ITE1526

Eksamen i Internetteknologi Fagkode: ITE1526

SVARFORSLAG : Eksamen i IBE102 Webutvikling Våren 2017.

Tilkobling og Triggere

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

Eksamen i IBE102 Webutvikling Våren 2017.

Databaser kort intro. Tom Heine Nätt

SQL 3: Opprette tabeller, datainnsetting og utsnitt

EKSAMEN EKSAMENSDATO: KLASSE: TID: ANTALL SIDER UTLEVERT: 5. TILLATTE HJELPEMIDLER: Alle trykte og skrevne

Innføring i bruk av CGI4VB

Sikkerhet og tilgangskontroll i RDBMS-er

MySQL-database, php. Innhold. 8 MySQL-database, php. 8.1 Databasen MySQL

Innføring i bruk av CGI4VB

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

Oppgave 1 (Opprett en database og en tabell)

Kapittel 11. Databasesikkerhet

HØGSKOLEN I SØR-TRØNDELAG

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

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

Dinesh Jeyabalasingam. Oppgavesett 9. Gruppeoppgave 2. Eksamenssett DEL 1. Oppgave 1.1. IF 1 Hvis $a er mindre eller lik $b stemmer

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

Webformularer, PHP og databaser

Bruke SQL fra Python. Med Psycopg2

En bedre verden med AJAX

HØGSKOLEN I SØR-TRØNDELAG

Klasser skal lages slik at de i minst mulig grad er avhengig av at klienten gjør bestemte ting STOL ALDRI PÅ KLIENTEN!

Presentasjon av gruppe 7: Erik Østensen, Henning Østensen og Kenneth Ådalen

Miniverden og ER- modell

Datamodellering og databaser SQL, del 2

9. ASP med databasekopling, del II

Produktdokumentasjon

ORDBMS og OODBMS i praksis

Applikasjonsutvikling med databaser

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

Oppgaver Oppgave a: Sett opp mulige relasjoner

Datamodellering og databaser SQL, del 2

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

Videregående programmering 6

Oblig 5 Webutvikling. Av Thomas Gitlevaag

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring -

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

Datamodellering og databaser SQL, del 2

1. SQL datadefinisjon og manipulering

10. ASP og SQL Innledning Recordset-objektet. Innhold. Referanse til læreboka Kapittel Se detaljer nedenfor.

HTML og relasjonsdatabaser med PHP

HØGSKOLEN I SØR-TRØNDELAG

Å bruke Java API-et til å sortere tabeller/arraylister der elementene er (referanser til) objekter

EKSAMEN. TILLATTE HJELPEMIDLER: Alle trykte og skrevne. INNFØRING MED PENN, evt. trykkblyant som gir gjennomslag

Web-programmering med JSP Løsningsforslag leksjon 4

HØGSKOLEN I SØR-TRØNDELAG

INF3100 V2018 Obligatorisk oppgave nr. 2

EKSAMEN (Konvertert fra en gammel PHP-eksamen)

Web-programmering med JSP Løsningsforslag leksjon 3

SQL Structured Query Language. Definere tabeller Skranker Fylle tabeller med data

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

Database security. Kapittel 14 Building Secure Software. Inf329, Høst 2005 Isabel Maldonado

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Agenda. Data og grenser Kontekster XSS XSS og kompliserende kontekster Injection attacks Beskyttelse OWASP

Eksamessett Høst 2009 Robin Sværen og Simen Arvesen

Antall oppgaver: 6. Alle trykte og skrevne hjelpemidler

EKSAMEN (Konvertert fra en gammel PHPeksamen)

1. Innføring i bruk av MySQL Query Browser

Sikkerhet i Pindena Påmeldingssystem

Oppgave 1 Flervalgsoppgaver (25%)

HØGSKOLEN I SØR-TRØNDELAG

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

>>12 Arbeide med MySQL

EKSAMEN. Les gjennom alle oppgavene før du begynner. Husk at det ikke er gitt at oppgavene står sortert etter økende vanskelighetsgrad.

TESTAPI. Deviations and Reporting

SQL: Datatyper m.m. Evgenij Thorstensen V18. Evgenij Thorstensen SQL: Datatyper m.m. V18 1 / 12

En enkel innføring i ASP

MySQL. Historikk. Nedlasting og installasjon

HØGSKOLEN I SØR-TRØNDELAG

12. Et større ASP-eksempel Innledning Beskrivelse av nett-butikken. Innhold

Løsningsskisse, eksamen J2EE og distribuerte systemer 19.mai 2004

Intentor Helpdesk - Installasjon Step #3: Microsoft Reporting Services

Prosjekt 3 i sikkerhet og hacking

Integritetsregler i SQL

Entobutikk 5.BRUKERMANUAL VÅR 2011

Paul Hinsch. MICADO AS Utviklet MapBasic applikasjoner i 10 år. Registreringsknapper og Objektdialog

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

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

Sikkerhet i Pindena Påmeldingssystem

Integritetsregler i SQL. Primærnøkler

Webformularer, PHP og databaser et crash-kurs

Aditro AS. Produktnotat Huldt & Lillevik Ansattportal Ansattportal. Versjon (286) Copyright 2014 Aditro Side 1

INF Puslegruppa - Kom i gang med PusleChat

Oppgave 1 1. Spørring: Resultattabell: 2. Spørring: Resultattabell: 3. Spørring:

Løsningsforslag til eksamen i IN2090 Databaser og datamodellering og INF1300 Introduksjon til databaser 6. desember :30 18:30 (4 timer)

EKSAMEN 6102 / 6102N DATABASER

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

Database med OpenOffice og MySQL

Obligatorisk oppgave 3 i Databaseadministrasjon.

Webformularer, PHP og databaser

Denne rapporten er beregnet for dataansvarlig på Grefsenhjemmet, den som skal installere, vedlikeholde og modifisere systemet.

Øvingsoppgave uke 3. Fanger i fengsel

Transkript:

Høgskolen i Narvik Side 1 av 9 Eksamen i Internetteknologi Fagkode: IVA1379 m/løsningsforslag Tid: Mandag, 07.06.04, 9:00-12:00 Tillatte hjelpemidler: Alle trykte og skrevne hjelpemidler tillatt. Eksamen består av 4 oppgaver og et vedlegg på 1 side.

Høgskolen i Narvik Side 2 av 9 Kort om oppgavesettet. Hver av oppgavene er en del av et større system for håndtering av feilmeldinger, en HELPdesk. I oppgave 1 skal det utvikles en modul for vising av innrapporterte feilmeldinger basert på kategori. I oppgave 2 skal det utvikles en modul for endring/oppdatering av eksisterende feilmeldinger, mens det i oppgave 3 skal utvikles en modul for innrapportering av nye feil. I oppgave 4 skal det utvikles en slettefunksjon som krever innlogging. Alle skript kodes fortrinnsvis i PHP og JavaScript, løsninger basert på Java Servlets godtas også. All informasjon i HELPdesk applikasjonen lagres i en MySQL database, nødvendige tabeller er gitt i vedlegg 1. Oppgave 1 (25%) Det skal være mulig å få en oversikt over alle feilmeldinger som er registrerte basert på kategori som vist i figur 1. Første gang en kommer inn på web-siden skal alle registrerte feilmeldinger i kategori med navn «Windows» vises. Kategorinavn vises som en drop-down liste, navn hentes fra kategori tabellen. Ved endring av valgt kategori skal kun feilmeldinger i den valgt kategori vises. Dato, tittel og brukernavn skal vises for hver feilmelding, postene skal være sortert på dato. Sørg for at tittelen er en hyperlenke med adresse til skriptet du skal skrive i oppgave 2, hyperlenken må inneholde en parameter som forteller hvilken feilmelding som skal modifiseres. Legg også til en knapp for registrering av ny feilmelding, denne skal kalle skriptet som skal skrives i oppgave 3. Feilmeldingene skal vises i en tabell eller tilsvarende. Figur 1: Skjermbilde som viser alle feilmeldinger Løsningsforslag: <? echo "<?xml version=\"1.0\""; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> Oppgave 1, Eksamen våren 2004 </title> </head> <body> <? // connect to server

Høgskolen i Narvik Side 3 av 9 $mysql_link = mysql_connect('limbo.hin.no', 'kc', 'XXXX') or die ('Feil ved oppkobling mot db tjener : '. mysql_err or()); mysql_select_db("test", $mysql_link) or die ('Feil ved tilkobling til db'. mysql_error()); print("<h1>helpdesk</h1>\n"); print("<table border=\"0\" summary=\"helpdesk-kategorier\">\n"); print("<tr>kategori\n"); print("<form>\n"); print("<select name=\"kategori\" onchange=submit();>\n"); $query = "select * from kategori"; while($row = mysql_fetch_array($mysql_result)) echo "<option "; if($_get['kategori '] == $row["navn"]) echo " selected"; echo ">". $row["navn"]. "</option>\n"; pri nt("</select>\n"); print("</tr>\n"); print("</table>\n"); print("<table border=\"1\" summary=\"helpdesklog\">\n"); print("<tr><th>dato</th><th>tittel</th><th>bruker</th></tr >\n"); $kategori = $_GET['kategori'] ; if(!isset($kategori)) $kategori = "Windows"; $query = "select * from helpdesk, kategori WHER E kategori.navn ='". $kategori."' and helpdesk.kategori = kategori.kat_id order by dato"; while($row = mysql_fetch_array($mysql_result)) print("<tr>". $row["dato"]. "\n"); print("<a href=\"oppgave2.php?id=". $row[" id"]. "\">". $row["tittel"]. "</a>\n"); print("". $row["bruker"]. "</tr>\n"); </table> pgave3.php"><input type="button" value="ny feilmelding"></form> <table><tr> <form action="op </tr> </table> </body> </html> Oppgave 2 (25%) Utvid funksjonaliteten slik at det er mulig å redigere en feilmelding. Feilmeldingens tittel, i tabellen i oppgave 1, skal være en hyperlenke. Når denne velges skal det komme opp et formular for redigering av feilmeldingen. Feltene dato, tittel og bruker skal ikke kunne redigeres. Kategorinavn vises som en drop-down liste med gjeldende kategori som valgt element. Skjermbilde skal se ut som vist i figur 2. Når knappen «Lagre endringer» velges skal databasen oppdateres med ny informasjon gitt inn om den aktuelle feilmeldingen. Etter at endringene er utført i databasen skal oversiktsiden over alle feilmeldinger i aktuell kategori vises.

Høgskolen i Narvik Side 4 av 9 Figur 2: Skjermbilde for endring av feilmelding Løsningsforslag: <? // connect to server $mysql_link = mysql_connect('limbo.hin.no', 'kc', 'XXXX') or die ('Feil ved oppkobling mot db tjener : '. mysql_error()); mysql_select_db("test", $mysql_link) or die ('Feil ved tilkobling til db'. mysql_error()); if(!isset($_post["submit"])) if (isset($_get['id'])) $query = "select * from helpdesk where id='". $_GET['id']. "'"; if($row = mysql_fetch_array($mysql_result)) $dato = $row["dato"]; $tittel = $row["tittel"]; $bruker = $row["bruker"]; $beskrivelse = $row["beskrivelse"]; $losning = $row["losning"]; $kategori = $row["kategori"]; print("<form action=\"oppgave2.php\" method=\"post\">\n"); print("<input type=\"hidden\" name=\"id\" value=\"". $_GET['id']."\">\n"); print("<table>\n"); print("<tr>dato\n"); print("$dato</tr>\n"); print("<tr>tittel\n"); print("$tittel</tr>\n"); print("<tr>bruker\n"); print("$bruker</tr>\n"); print("<tr>beskrivelse\n"); print("<textarea name=\"beskrivelse\" cols=\"50\" rows=\"4\" >$beskrivelse</textarea></tr>\n"); print("<tr>kategori\n"); print("<select name=\"kategori\">\n"); $query = "select * from kategori"; while($row = mysql_fetch_array($mysql_result)) echo "<option "; if($kategori == $row["kat_id"]) echo " selected"; echo ">". $row["navn"]. "</option>\n";

Høgskolen i Narvik Side 5 av 9 print("</select></tr>\n"); print("<tr>løsning\n"); print("<textarea name=\"losning\" cols=\"50\" rows=\"4\">$losning</textarea></tr>\n"); print("<tr><input type=\"submit\" name=\"submit\" value=\"lagre endringer\"></tr>\n"); print("</table>\n"); print("</form>\n"); else echo "Manglende parameter"; else // oppdater feilmelding med id = $id $query = "select * from kategori where navn ='".$_POST["kategori"]."'"; if($row = mysql_fetch_array($mysql_result)) $kategori = $row["kat_id"]; $query = "update helpdesk "; $query.= "set beskrivelse = '". $_POST["beskrivelse"]."', "; $query.= "losning = '". $_POST["losning"]."', "; $query.= "kategori = '". $kategori."' "; $query.= "where "; $query.= "id='". $_POST["id"]."'"; $resultat = mysql_query($query, $mysql_link) or die ("Invalid query"); // redirect $sql = "select navn from kategori,helpdesk where helpdesk.id='". $_POST["id"]."' and helpdesk.kategori=kategori.kat_id"; $resultat = mysql_query($sql,$mysql_link); if($rad = mysql_fetch_array($resultat)) $kategori = $rad["navn"] ; header ("Location: oppgave1.php?kategori=$kategori"); exit; Oppgave 3 (25%) I denne oppgaven skal du lage et skript som håndterer opprettelse av en ny feilmelding når knappen «Ny feilmelding» i figur 1. aktiveres. Skriptet skal skape dialogen i figur 3 samt lagre informasjonen gitt inn i databasen når knappen «Registrer» aktiveres. Input data må valideres, du bestemmer selv om dette skal gjøres på klienten eller tjeneren. Alle felt må fylles ut. Feltet bruker skal kun inneholde tall eller bokstaver med maksimal lengde på 12, tittel og beskrivelse har maksimal lengde på 255 tegn og skal ikke kunne inneholde HTML koder. Ved feil i input data skal brukeren få beskjed om dette og mulighet for å rette opp i feilen før skjemaet sendes inn på nytt.

Høgskolen i Narvik Side 6 av 9 Figur 3: Skjermbilde for registrering av ny feilmelding Løsningsforslag: <? function print_form() print("<form action=\"oppgave3.php\" method=\"post\">\n"); print("<table>\n"); print("<tr>tittel\n"); printf("<input type=\"text\" name=\"tittel\"></tr>\n",$_post['tittel'] ); print("<tr>bruker\n"); printf("<input type=\"text\" name=\"bruker\" value=\"%s\"></tr>\n", $_POST['bruker']); print("<tr>beskrivelse\n"); printf("<textarea name=\"beskrivelse\" cols=\"50\" rows=\"4\" >%s</textarea></tr>\n", $_POST['beskrivelse']); print("<tr>kategori\n"); print("<select name=\"kategori\">\n"); $query = "select * from kategori"; $mysql_result = mysql_query($query); while($row = mysql_fetch_array($mysql_result)) echo "<option>". $row["navn"]. "</option>\n"; print("</select></tr>\n"); print("<tr>løsning\n"); print("<textarea name=\"losning\" cols=\"50\" rows=\"4\">$losning</textarea></tr>\n"); print("<tr><input type=\"submit\" name=\"submit\" value=\"registrer\"></tr>\n"); print("</table>\n"); print("</form>\n"); // connect to server $mysql_link = mysql_connect('limbo.hin.no', 'kc', 'sol&sommer') or die ('Feil ved oppkobling mot db tjener : '. mysql_error()); mysql_select_db("test", $mysql_link) or die ('Feil ved tilkobling til db'. mysql_error()); if(!isset($_post["submit"])) print_form(); else if (ereg("[a-za-zæøåæøå]",$_post['tittel']) && ereg("[a-zazæøåæøå]",$_post['bruker']) && strlen($_post['bruker'])<=12 && strlen($_post['tittel'])<=255 && strlen($_post['beskrivelse'])<=255) $beskrivelse = strip_tags($_post['beskrivelse']); $tittel = strip_tags($_post['tittel']); $sql = "select kat_id from kategori where navn='". $_POST["kategori"]."'"; $resultat = mysql_query($sql,$mysql_link); if($rad = mysql_fetch_array($resultat)) $kat_id = $rad["kat_id"] ; // legg til ny feilmelding i db $sql = "INSERT INTO `helpdesk` ( `id`, `kategori`, `tittel`, `beskrivelse`, `bruker`, `dato`, `status`, `losning` ) "; $sql.= " VALUES ('','$kat_id', '".$tittel."'"; $sql.= ", '". $beskrivelse. "', '". $_POST["bruker"]. "', now(), '', '')" ; $resultat = mysql_query($sql, $mysql_link) or die ("Invalid query"); // redirect $kategori=$_post["kategori"];

Høgskolen i Narvik Side 7 av 9 header ("Location: oppgave1.php?kategori=$kategori"); exit; else print("<h3>feil i input parametre</h3>"); print_form(); Oppgave 4 (25%) Det eneste som gjenstår nå for at HELPdesk applikasjone skal bli komplett er sletting av feilmeldinger. Foreta nødvendige endringer i skriptet som oppretter skjermbildet i oppgave 1 for å kunne tilby denne funksjonaliteten. Det er nok her at du beskriver endringene som må foretas i skriptet i oppgave 1 for å få lagt til denne funksjonaliteten. Skriv deretter nødvendig skript som sletter den valgte feilmeldingen fra databasen og deretter viser oversiktsiden over alle feilmeldinger i aktuell kategori. Slettefunksjonen ønskes beskyttet, slik at kun brukere med spesielle rettigheter kan slette feilmeldinger. Databasen er i denne forbindelse utvidet med tabellen brukere, se vedlegg 1. Kun brukere i denne tabellen skal kunne slette feilmeldinger, passordet i tabellen er kryptert ved hjelp av md5 funksjonen i PHP. Foreta nødvendige endringer i skriptet slik at brukerne må logge inn med riktig brukernavn og passord for å kunne slette feilmeldinger. Ta vare på innloggingen i en sesjon (session) slik at brukeren ikke trenger å logge inn flere ganger. md5 funksjonen: string md5 ( string str) md5 kalkulerer MD5 hash verdien av str og returnerer denne. Løsningsforslag: <?php session_start(); $mysql_link = mysql_connect('limbo.hin.no', 'kc', 'sol&sommer') or die ('Feil ved oppkobling mot db tjener : '. mysql_error()); mysql_select_db("test", $mysql_link) or die ('Feil ved tilkobling til db'. mysql_error()); if(isset($_session["bruker"])) //allerede innlogget, slette melding if(isset($_get["delete_id"])) $sql = "delete from helpdesk where id='".$_get['delete_id']. "'"; $mysql_result = mysql_query($sql, $mysql_link); if($mysql_result) // sletting ok -> redirect $kategori=$_get["kategori"]; header ("Location: oppgave1.php?kategori=$kategori"); exit; else echo "Feil ved sletting: ". mysql_error(); else echo "Feil ved sletting, post mangler"; elseif (isset($_post['submit'])) $sql = "select * from brukere_v04 where brukernavn='".$_post['brukernavn']. "'"; $mysql_result = mysql_query($sql, $mysql_link); if($row = mysql_fetch_array($mysql_result)) if($row["passord"] == md5($_post['passord'])) $_SESSION["bruker"] = $_POST['brukernavn'];

Høgskolen i Narvik Side 8 av 9 header("location: http://".$_server['http_host'].$_server['php_self']."?delete_id=". $_POST["delete_id"]. "&kategori=". $_POST["kategori"]); exit; // stopp else <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>login</title> </head> <body> <form action="<? echo $_SERVER['PHP_SELF'] " method="post" > <input type="hidden" name="delete_id" value="<?echo $_GET["delete_id"] " /> <input type="hidden" name="kategori" value="<?echo $_GET["kategori"] " /> <table> <tr> Navn <input type="text" name="brukernavn" size="20" /> </tr> <tr> Passord <input type="password" name="passord" size="20" /> </tr> <tr> <td colspan="2"> <input type="submit" name="submit" value="loginn" /> </tr> </table> </form> </body> </html> <?

Høgskolen i Narvik Side 9 av 9 Vedlegg 1 Databasetabeller benyttet av HELPdesk applikasjonen: Tabellen helpdesk har følgende felter: CREATE TABLE helpdesk ( id int(11) NOT NULL auto_increment, kategori int(4) NOT NULL default '0', tittel varchar(50) NOT NULL default '', beskrivelse varchar(255) NOT NULL default '', bruker varchar(20) NOT NULL default '', dato date NOT NULL default '0000-00-00', losning varchar(255) default NULL, PRIMARY KEY (id) ) TYPE=MyISAM; Tabellen kategori har følgende felter: CREATE TABLE kategori ( kat_id int(4) NOT NULL auto_increment, navn varchar(30) NOT NULL default '', PRIMARY KEY (kat_id) ) TYPE=MyISAM; Tabellen brukere har følgende felter: CREATE TABLE brukere ( brukernavn varchar(12) NOT NULL default '', passord varchar(32) binary NOT NULL default '', PRIMARY KEY (brukernavn) ) TYPE=MyISAM;