OPPITUNTI 19 Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla

Koko: px
Aloita esitys sivulta:

Download "OPPITUNTI 19 Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla"

Transkriptio

1 19. Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla 337 OPPITUNTI 19 Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla HTTP on tilaton protokolla. Se merkitsee sitä, että jokainen käyttäjän lataama sivu edustaa erillistä yhteyttä. Toisaalta Web-sivustoa pidetään käyttäjien ja julkaisijoiden toimesta ikäänkuin ympäristöinä, avaruuksina, joiden sisällä jokainen sivu on osa laajempaa kokonaisuutta. Siksi ei ole lainkaan yllättävää, että strategiat, joilla tietoa viedään sivulta toiselle, ovat yhtä vanhoja kuin itse Webikin. Tällä tunnilla tutkimme kahta menettelyä tallentaa tietoa sivulta toiselle, jotta tieto olisi peräkkäisten sivujen käytettävissä. Tämän tunnin aiheita ovat seuraavat: Mitä evästeet ovat Kuinka eväste luetaan Kuinka eväste asetetaan Kuinka evästeitä käytetään tallentamaan sivuston käyttöön liittyvää informaatiota tietokantaan Kyselymerkkijonot Kuinka muodostetaan funktio, joka muuntaa assosiatiivisen taulukon kyselymerkkijonoksi

2 Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla Evästeet Netscape loi maagisen evästeen Netscapen ykkösversion aikaan. Nimen voisi olettaa perustuvan onnen kekseihin. Noista ajoista lähtien standardi on otettu huomioon myös muiden selainvalmistajien toimesta. Eväste on tiedonpalanen, joka tallennetaan selaimen toimesta palvelin- tai skriptipyynnön yhteydessä. Palvelin voi pyytää tallentamaan enintään 20 evästettä käyttäjän selaimen toimesta. Yksittäisen evästeen koko on enintään 4 kilotavua. Kun eväste on asetettu, vain sen synnyttänyt palvelin voi lukea tietoa, jolloin taataan käyttäjän yksityisyys. Käyttäjä voi lisäksi laittaa selaimensa asetukset sellaisiksi, että evästeiden laittamisesta ilmoitetaan, tai hän voi jopa estää evästeiden käytön. Tästä syystä evästeitä tulisi käyttää varoen eikä niistä tulisi tehdä sivuston olennaisia elementtejä varoittamatta käyttäjää. Evästeet voivat kuitenkin olla erinomainen keino tallentaa pieniä määriä tietoa käyttäjästä ja viedä tuo tieto sivulta toiselle ja jopa käyntikerralta toiselle. Evästeen anatomia Evästeet asetetaan yleensä HTTP-otsikossa (vaikkakin JavaScript voi asettaa evästeen suoraan selaimelta käsin). PHP-skripti, joka asettaa evästeen, saattaa lähettää otsikoita, jotka näyttävät jokseenkin seuraavanlaisilta: HTTP/ OK Date: Fri, 04 Feb :03:38 GMT Server: Apache/1.3.9 (UNIX) PHP/4.0b3 Set-Cookie: vegetable=artichoke; expires=friday, A 04-Feb-00 22:03:38 GMT; path=/; domain=zink.demon.co.uk Connection: close Content-Type: text/html Kuten näet, Set-Cookie-otsikko sisältää nimi/arvo-parin, GMT-ajan, polun ja domainin. Nimi ja arvo ovat URL-koodattuja. Kenttä nimeltä expires on ohje selaimelle: se kertoo, milloin selain voi unohtaa evästeen. Kenttä nimeltä path määrittää Web-sivuston, jonka alta eväste lähetetään takaisin palvelimelle. Domainkenttä määrittää Internet-domainit, joihin eväste lähetetään. Domain ei voi olla eri domain kuin se, mistä eväste lähetettiin, mutta siinä voi kuitenkin olla hieman joustavuutta. Edellisessä esimerkissä selain lähettää evästeen palvelimelle zink.demon.co.uk ja palvelimelle Löydät lisätietoa HTTP-otsikoista luvusta 13, "Pintaa syvemmältä". Jos selain asetetaan tallentamaan evästeet, se pitää tiedon, kunnes päättymispäivämäärä kohdataan. Jos käyttäjä siirtyy mille tahansa sivulle, joka vastaa evästeen polkua ja domainia, se lähettää evästeen uudelleen palvelimelle. Selaimen otsikot saattavat näyttää jokseenkin tältä: GET / HTTP/1.0 Connection: Keep-Alive User-Agent: Mozilla/4.6 (X11; I; Linux apmac ppc)

3 19. Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla 339 Host: zink.demon.co.uk:1126 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */* Accept-Encoding: gzip Accept-Language: en Accept-Charset: iso ,*,utf-8 Cookie: vegetable=artichoke PHP-skriptillä on tämän jälkeen pääsy evästeeseen ympäristömuuttujan HTTP-COOKIE (joka tallentaa kaikkien evästeiden tunnisteet ja arvot), globaalin muuttujan $vegetable tai globaalin taulukkomuuttujan HTTP_COOKIE_VARS["vegetable"] kautta: print "$HTTP_COOKIE<BR>"; // tulostaa "vegetable=artichoke" print getenv("http_cookie")."<br>"; // tulostaa "vegetable=artichoke" print "$vegetable<br>"; // tulostaa "artichoke" print "$HTTP_COOKIE_VARS[vegetable]<BR>"; // tulostaa "artichoke" Evästeen asettaminen PHP:llä PHP-skriptissä voidaan asettaa eväste kahdella eri tavalla. Voit käyttää header()-funktiota asettamaan Set- Cookie-otsikko. Tutustuit tähän header()-funktioon jo luvussa 9, "Lomakkeiden käsittely". Funktio ottaa argumentikseen merkkijonon, joka sitten sijoitetaan palvelimen vastauksen otsikko-osaan. Koska otsikot lähetetään automaattisesti puolestasi, header()-kutsun on oltava ennen kaikkia muita selaintulostuksia. header ("vegetable=artichoke; expires=friday, 04-Feb-00 22:03:38 GMT; path=/; domain=zink.demon.co.uk"); Vaikka tämä menettely ei olekaan kovin vaikea, evästeen asettaminen tällä tavoin vaatii muodostamaan funktion, joka kehittää otsikon merkkijonon. Päivämäärän muotoilu (kuten tässä esimerkissä) ja nimi/arvoparin URL-koodaus eivät olisi kovinkaan hauskoja tehtäviä. Kyseessä olisi joka tapauksessa pyörän uudelleen keksiminen, koska PHP tarjoaa käyttöön funktion, joka tekee juuri nuo toiminnot. Funktio nimeltä setcookie() tekee nimensä mukaisesti sen mitä pitääkin: se tulostaa Set-Cookie-otsikon. Siitä syystä sitä tulee kutsua ennen kuin selaimelle lähetetään mitään muuta tietoa. Funktio ottaa argumenteikseen evästeen nimen, evästeen arvon, päättymispäivämäärän UNIXin muodossa, polun, domainin ja kokonaisluvun, jonka arvo on 1, jos eväste lähetetään turvallisen yhteyden yli. Kaikki muut argumentit paitsi ensimmäinen (evästeen nimi) ovat valinnaisia. Listaus 19.1 käyttää setcookie()-funktiota evästeen asettamiseen.

4 Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla Listaus 19.1 Evästeen arvon asettaminen ja tulostaminen 1: <?php 2: setcookie( "vegetable", "artichoke", time()+3600, "/", 3: "zink.demon.co.uk", 0 ); 4:?> 5: <html> 6: <head> 7: <title>listing 19.1 Setting and printing a cookie value</title> 8: </head> 9: <body> 10: <?php 11: if ( isset( $vegetable ) ) 12: print "<p>hello again, your chosen vegetable is $vegetable</p>"; 13: else 14: print "<p>hello you. This may be your first visit</p>"; 15:?> 16: </body> 17: </html> Vaikka asetamme evästeen, kun skripti ajetaan ensimmäistä kertaa, ei $vegetable-muuttujaa aseteta tällä kohtaa. Eväste vain luetaan, kun selain lähettää sen palvelimelle. Sitä ei tapahdu ennen kuin käyttäjä vierailee domainin sivulla uudelleen. Asetamme evästeen nimeltä "vegetable" ja evästearvon "artichoke". Käytämme time()-funktiota sieppaamaan nykyisen aikaleiman ja lisäämään siihen 3600 (tunnissa on 3600 sekuntia). Tuo kokonaissumma kuvaa päättymisajankohtaa. Määrittelemme poluksi "/", mikä tarkoittaa sitä, että eväste tulee lähettää alueen jokaisen sivun kohdalla. Asetamme domainiksi "zink.demon.co.uk", mikä tarkoittaa sitä, että eväste lähetetään jokaiselle tuon ryhmän palvelimelle (esimerkiksi palvelimille sekä dev.zink.demon.co.uk). Jos haluat evästeen palautettavan vain palvelimelta, joka toimii skriptisi alustana, voit käyttää ympäristömuuttujaa nimeltä $SERVER_NAME sen sijaan, että kirjoittaisit palvelimen nimen suoraan. Tämän menettelyn lisäetuna on se, että koodi toimii odotetusti, vaikka siirtyisit uuden palvelimen käyttöön. Lopuksi viemme arvon 0 setcookie()-funktiolle, jolla ilmoitamme, että evästeet voidaan lähettää ei-turvallista yhteyttä käyttäen. Vaikka voitkin ohittaa kaikki muut paitsi ensimmäiset argumentit, on hyvä antaa kaikki muut argumentit paitsi domain ja turvallisuus. Tämä siksi, että polkuargumentti vaaditaan joidenkin selainten toimesta, jotta evästeet toimisivat odotetusti. Ilman polkuargumenttia eväste voidaan lähettää vain nykyisen kansion tai sen alikansioiden asiakirjoille. Viemällä setcookie()-funktiolle tyhjän merkkijonon ("") merkkijonoargumenttien paikalla ja nollan (0) kokonaislukuargumenttien sijaan, nuo argumentit ohitetaan.

5 19. Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla 341 Evästeen tuhoaminen Eväste voidaan tuhota kutsumalla setcookie()-funktiota ja antamalla vain evästeen nimi argumenttina: setcookie( "vegetable" ); Se ei kuitenkaan toimi aina oikein ja siihen ei pitäisi luottaa. On turvallisinta asettaa päättymisajankohta: setcookie( "vegetable", "", time()-60, "/", "zink.demon.co.uk", 0); Sinun tulisi myös varmistaa, että viet setcookie()-funktiolle saman polun, domainin ja turvallisuusparametrin kuin evästeen luonnin yhteydessä. Istuntoevästeiden luominen Voimme luoda evästeen, joka kestää vain istunnon ajan, viemällä setcookie()-funktiolle päättymisajankohdaksi arvon 0. Kun selain on päällä, evästeet palautetaan palvelimelle. Selain ei muista kuitenkaan evästettä sen jälkeen kun selain suljetaan ja avataan uudelleen. Tällainen menettely voi olla hyödyllistä skripteissä, jotka todentavat käyttäjän evästeen avulla ja sallivat jatkuvan pääsyn henkilökohtaisiin tietoihin useilta eri sivuilta, kun salasana on lähetetty. Yleensä et halua, että selain pääsee noille sivuille sen jälkeen kun se on käynnistetty uudelleen, koska et voi olla lainkaan varma siitä, että käyttäjä on sama kuin edellisellä kerralla. setcookie( "session_id", "55435", 0 ); Esimerkki sivuston käytön seuranta Kuvittele, että meille on annettu tehtäväksi kerätä tietoa käyttäjistä evästeiden ja MySQL-tietokantojen avulla. Asiakas haluaa meidän keräävän tietoa yksittäisistä käyttäjistä, keskimääräisen latausten määrän ja keskimääräisen vierailuajan. Ensimmäisenä tehtävänämme on selittää evästeiden rajallisuus asiakkaalle. Ensiksikin kaikki kävijät eivät salli evästeiden käyttöä selaimellaan. Jos evästettä ei hoideta selaimen toimesta, evästeskripti olettaa todennäköisesti, että kyseessä on aina asiakkaan ensimmäinen vierailu. Niinpä tilastotiedot vääristyvät, kun mukana on selaimia, jotka eivät tue evästeitä. Edelleen on sanottava, että emme voi olla varmoja siitä, että sama käyttäjä käyttää jatkuvasti tiettyä selainta; usein selain on pikemminkin usean käyttäjän käytössä. Kun rajallisuus on asiakkaan tiedossa, voimme mennä eteenpäin. Voimme itse asiassa muodostaa toimivan esimerkin alle sadalla koodirivillä! Ensin meidän on luotava tietokannan taulukko, jossa ovat taulukon 19.1 sisältämät kentät. Taulukko 19.1 Tietokannan kentät Nimi Tyyppi Kuvaus id Kokonaisluku Automaattisesti kasvatettava kenttä, joka tuottaa ja tallentaa uniikin ID:n kullekin käyttäjälle first_visit Kokonaisluku Aikaleima, joka edustaa ensimmäisen

6 Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla sivupyynnön ajankohtaa last_visit Kokonaisluku Aikaleima, joka edustaa viimeisimmän sivupyynnön ajankohtaa num_visits Kokonaisluku Käyttäjälle jaettujen istuntojen lukumäärä total_duration Kokonaisluku Arvioitu kokonaisaika, joka on vietetty sivustossa (sekunneissa) total_clicks Kokonaisluku Käyttäjän tekemien pyyntöjen kokonaismäärä Voimme luoda MySQL-taulukon nimeltä track_visit seuraavalla CREATE-lauseella: create table track_visit ( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY( id ), first_visit INT, last_visit INT, num_visits INT, total_duration INT, total_clicks INT ); Nyt, kun meillä on käytössämme taulukko, meidän on kirjoitettava koodia, joka avaa tietokantayhteyden ja tarkistaa evästeen olemassaolon. Jos eväste ei ole olemassa, luomme uuden rivin taulukkoomme ja asetamme alkuarvot kenttiin. Se tehdään listauksessa Listaus 19.2 Skripti, joka lisää uuden käyttäjän tiedot MySQL-tietokantaan 1: <?php 2: $link = mysql_connect( "localhost", "harry", "elbomonkey" ); 3: if (! $link ) 4: die( "Couldn't connect to mysqld" ); 5: mysql_select_db( "sample", $link ) or die ( mysql_error() ); 6: if (! isset ( $visit_id ) ) 7: $user_stats = newuser( $link ); 8: else 9: print ``Welcome back $visit_id<p>"; 10: function newuser( $link ) 11: {

7 19. Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla : // uusi käyttäjä! 13: $visit_data = array ( 14: first_visit => time(), 15: last_visit => time(), 16: num_visits => 1, 17: total_duration => 0, 18: total_clicks => 1 19: ); 20: $query = "INSERT INTO track_visit ( first_visit, 21: last_visit, 22: num_visits, 23: total_duration, 24: total_clicks ) "; 25: $query.= "values( $visit_data[first_visit], 26: $visit_data[last_visit], 27: $visit_data[num_visits], 28: $visit_data[total_duration], 29: $visit_data[total_clicks] )"; 30: $result = mysql_query( $query ); 31: $visit_data[id] = mysql_insert_id(); 32: setcookie( "visit_id", $visit_data[id], 33: time()+(60*60*24*365*10), "/" ); 34: return $visit_data; 35: } 36:?> Kytkeydymme MySQL-palvelimelle normaaliin tapaan ja valitsemme tietokannan, joka sisältää taulukkomme (saat lisätietoa MySQL-kannoista luvusta 12, "Tietokantojen käyttö"). Testaamme nyt muuttujan $visit_di läsnäolon; se on evästeen nimi, joka identifioi yksittäisen käyttäjän. Jos muuttujaa ei ole olemassa, oletamme, että olemme tekemisissä uuden käyttäjän kanssa ja kutsumme funktiota nimeltä newuser(). Funktio ottaa argumentikseen linkkitunnisteen ja palauttaa arvotaulukon, jonka lisäämme omaan taulukkoomme. Funktion sisällä luodaan taulukko nimeltä $visit_data. Asetamme sen first_visit- ja last_visitalkioiden arvoiksi nykyisen ajan sekunneissa. Koska kyseessä on ensimmäinen vierailu, asetamme alkioiden num_visits ja total_clicks arvoiksi ykkösen. Tällä vierailulla ei ole kulunut yhtään aikaa, joten alkion total_duration arvoksi asetetaan 0. Käytämme tämän taulukon alkioita luodaksemme uuden rivin taulukkoomme ja asetamme kuhunkin kenttään samannimisen alkion arvon. Koska id-kenttä kasvattaa itse itseään, sitä ei tarvitse asettaa. Voimme saada

8 Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla selville id-kentän arvon funktiolla mysql_insert_id(). Nyt kun meillä on uuden käyttäjän ID, voimme lisätä sen $visit_data-taulukkoon, joka sitten viittaa vierailijan riviin MySQL-taulussa. Lopuksi käytämme setcookie()-funktiota asettamaan visit_id-evästeen ja palauttamaan $visit_datataulukon kutsuvalle koodille. Kun vierailija lataa tämän skriptin seuraavan kerran, $visit_id-muuttujan arvona on visit_id-evästeen arvo. Koska tämä muuttuja on asetettu, käyttäjä yksinkertaisesti toivotetaan tervetulleeksi eikä mtään muita toimintoja tarvitse enää tehdä. Itse asiassa meidän tulee päivittää track_visit-taulukon informaatio, jos havaitsemme tunnetun vierailijan palaamisen sivuille. Meidän on testattava, onko nykyinen pyyntö osa meneillään olevaa vierailua vai uuden vierailun alku. Jos viimeisen pyynnön aika lisättynä tähän ajanjaksoon on suurempi kuin nykyinen, oletamme, että nykyinen pyyntö on osa meneillään olevaa istuntoa. Muutoin toivotamme vanhan kävijän tervetulleeksi. Listaus 19.3 lisää aiempaan koodiimme uuden funktion nimeltä olduser(). Listaus 19.3 Skripti jäljittää käyttäjät evästeiden ja MySQL-tietokannan avulla 1: <?php 2: $slength = 300; // 5 minuuttia sekunneissa 3: $link = mysql_connect( "localhost", "harry", "elbomonkey" ); 4: if (! $link ) 5: die( "Couldn't connect to mysqld" ); 6: mysql_select_db( "sample", $link ) or die ( mysql_error() ); 7: if (! isset ( $visit_id ) ) 8: $user_stats = newuser( $link ); 9: else 10: { 11: $user_stats = olduser( $link, $visit_id, $slength ); 12: print "Welcome back $visit_id<p>"; 13: } 14: function newuser( $link ) 15: { 16: // uusi käyttäjä! 17: $visit_data = array ( 18: first_visit => time(), 19: last_visit => time(), 20: num_visits => 1, 21: total_duration => 0,

9 19. Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla : total_clicks => 1 23: ); 24: $query = "INSERT INTO track_visit ( first_visit, 25: last_visit, 26: num_visits, 27: total_duration, 28: total_clicks ) "; 29: $query.= "values( $visit_data[first_visit], 30: $visit_data[last_visit], 31: $visit_data[num_visits], 32: $visit_data[total_duration], 33: $visit_data[total_clicks] )"; 34: $result = mysql_query( $query ); 35: $visit_data[id] = mysql_insert_id(); 36: setcookie( "visit_id", $visit_data[id], 37: time()+(60*60*24*365*10), "/" ); 38: return $visit_data; 39: } 40: function olduser( $link, $visit_id, $slength ) 41: { 42: // hän on ollut täällä ennenkin! 43: $query = "SELECT * FROM track_visit WHERE id=$visit_id"; 44: $result = mysql_query( $query ); 45: if (! mysql_num_rows( $result ) ) 46: // eväste löydetty, mutta id ei ole tietokannassa: uusi käyttäjä 47: return newuser( $link ); 48: $visit_data = mysql_fetch_array( $result, $link ); 49: // ei käyntejä, joten kasvatus 50: $visit_data[total_clicks]++; 51: if ( ( $visit_data[last_visit] + $slength ) > time() ) 52: // edelleen istunnossa, joten lisää kuluneeseen kokonaisaikaan 53: $visit_data[total_duration] += 54: ( time() - $visit_data[last_visit] );

10 Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla 55: else 56: // uusi vierailu 57: $visit_data[num_visits]++; 58: // päivitä tietokanta 59: $query = "UPDATE track_visit SET last_visit=".time().", 60: num_visits=$visit_data[num_visits], "; 61: $query.= "total_duration=$visit_data[total_duration], 62: total_clicks=$visit_data[total_clicks] "; 63: $query.= "WHERE id=$visit_id"; 64: $result = mysql_query( $query ); 65: return $visit_data; 66: } 67:?> Lisäsimme koodiin uuden globaalin muuttujan nimeltä $slength. Se määrittää ajanjakson, jonka kuluttua oletamme, että uusi vierailu on aloitettu. Jos $visit_id-muuttuja löytyy, tiedämme, että eväste oli käytössä. Kutsumme uutta olduser()-funktiota ja viemme sille tietokantalinkin tunnisteen, $visit_id-muuttujan ja $slength-muuttujan, jonka arvona on 300 sekuntia. Teemme ensin kyselyn tietokantaan olduser()-funktiossa saadaksemme tietoa kävijästä, jonka tiedot on jo tallennettu. Tutkimme track_visit-taulukkoa löytääksemme rivin, jonka id-kentän arvo on sama $visit_idmuuttujan arvo. Voimme sitten testata mysql_query()-funktion palauttamien arvojen määrän funktiolla mysql_num_rows() viemällä sille tulostunnisteen. Jos funktio palauttaa arvon nolla, tiedämme, että kyseessä ei ollut vanha kävijä, joten kutsumme nyt newuser()-funktiota ja päätämme funktion suorituksen. Olettakaamme, että olemme paikantaneet taulukosta rivin, joka vastaa visit_id-evästettä; käytämme sitten mysql_fetch_array()-funktiota täyttämään taulukkomuuttujan ($visit_data) tiedot rivillä olevien kenttien nimillä ja arvoilla. Nykyinen pyyntö edustaa uutta viittausta sivuille, joten kasvatamme alkion $visit_data[total_clicks] arvoa yhdellä. Tarkistamme sitten, onko $visit_data[last_visit]-alkion arvo, johon on lisätty $slength-muuttujassa oleva aikajakso, suurempi kuin nykyinen aika. Jos niin on, viimeisestä viittauksesta on kulunut aikajaksoa vähemmän aikaa, joten voimme olettaa, että tämä pyyntö kuuluu nykyiseen istuntoon. Siksi lisäämme viimeisestä viittauksesta kuluneen ajan $visit_data[total_duration]- alkioon. Jos pyyntö edustaa uutta vierailua, kasvatamme $visit_data[num_visits]-arvoa. Lopuksi käytämme $visit_data-taulukon muuttuneita arvoja päivittämään käyttäjän rivin track_visit-taulukossa ja $visit_datataulukon kutsuvalle koodille. Huomaa, että asetamme last_visit-kentän arvoksi nykyisen ajan. Nyt kun olemme luoneet koodin, meidän tulee luoda nopea funktio demonstroimaan toimintaa. Funktio nimeltä outputstats() yksinkertaisesti laskee käyttäjän keskimääräisarvot ja tulostaa ne selaimelle. Todellisuudessa meidän tulisi luultavasti luoda joitakin analysoituja näyttöjä asiakkaallemme, jotta asiakas saisi kokonaiskuvan tilanteesta. Listaus 19.4 luo outputstats()-funktion. Edellisten esimerkkien koodi on yhdistetty tähän skriptiin include()-lauseella.

11 19. Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla 347 Listaus 19.4 Skripti, joka tulostaa käyttöön liittyvää tilastotietoa, jota on kerätty listauksessa : <?php 2: include("listing19.3.php"{); 3: outputstats(); 4: function outputstats() 5: { 6: global $user_stats; 7: $clicks = sprintf( "%.2f", 8: ($user_stats[total_clicks]/$user_stats[num_visits]) ); 9: $duration = sprintf( "%.2f", 10: ($user_stats[total_duration]/$user_stats[num_visits]) ); 11: print "<p>hello! Your id is $user_stats[id]</p>\n\n"; 12: print "<p>you have visited 13: $user_stats[num_visits] time(s)</p>\n\n"; 14: print "<p>av clicks per visit: $clicks</p>\n\n"; 15: print "<p>av duration of visit: $duration seconds</p>\n\n"; 16: } 17:?> Kuva 19.1 esittää listauksen 19.4 tulostuksen. Käytämme include()-lausetta kutsumaan kirjoittamamme jäljityskoodin. Lisäämme samanlaisen rivin jokaiselle asiakkaan sivuston sivulle. Koodin outputstats()-funktio toimii yhdessä globaalin $user_stats-muuttujan kanssa. Joko funktio newuser() tai olduser() palauttaa muuttujan ja se sisältää saman tiedon kuin käyttäjän rivi track_visit-taulukossa. KUVA 19.1 Käyttöön liittyvän tilastotiedon raportointi.

12 Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla Laskeaksemme käyttäjän keskimääräisen viittausten lukumäärän jaamme $user_stats[total_clicks]-alkion arvon vierailujen määrällä. Samalla lailla jaamme $user_stats[total_duration]-alkion arvon samalla luvulla. Käytämme sprint()-funktiota pyöristämään tuloksen kahteen desimaaliin. Jäljellä on vain raportin kirjoittaminen selaimelle. Voisimme tietenkin laajentaa tätä esimerkkiä jäljittämään käyttäjän asetukset sekä selaintyypin ja IP-osoitteet. Kuvittele sivustoa, joka analysoi käyttäjän liikkeet ja muokkaa sisältöä valittujen linkkien perusteella. Kyselymerkkijonojen käyttö Evästeiden heikkoutena on se, että niiden käyttäminen riippuu asiakkaasta. Kyse ei ole pelkästään siitä, salliiko käyttäjä evästeiden käytön vaan myös siitä, että selaimetkin toteuttavat evästeitä eri tavoin. Jotkin selaimet ovat dokumentoineet virheitä, jotka liittyvät siihen, kuinka ne käsittelevät evästeitä. Jos haluat pelkästään säilyttää tilan yksittäisen istunnon ajan, voisi olla järkevää pohtia perinteisempiä keinoja. Kun lähetät lomakkeen GET-metodilla, sen kentät ja arvot URL-koodataan ja lisätään URL-osoitteeseen, johon lomake lähetetään. Tällöin tiedot tulevat palvelimen ja skriptiesi saataville. Olettaen, että lomakkeella on kaksi kenttää, user_id ja name, näyttäisi kyselymerkkijono seuraavalta: Kukin nimi ja arvo erotetaan toisistaan yhtäsuuruusmerkillä (=) ja kukin nimi/arvo-pari erotetaan toisistaan etmerkillä (&). PHP koodaa tämän merkkijonon ja asettaa jokaisen parin assosiatiiviseen $HTTP_GET_VARStaulukkoon. Se luo myös globaalin muuttujan kullakin nimellä ja täyttää sen vastaavalla arvolla. Saadaksesi siis esille user_id-arvon, voit käyttää jompaa kumpaa seuraavista muuttujista: $HTTP_GET_VARS[user_id]; $user_id; Kyselymerkkijonojen käyttäminen ei rajoitu pelkästään lomakkeisiin. Voit rakentaa oman kyselymerkkijonosi suhteellisen helposti ja viedä sillä tavoin tietoa sivulta toiselle. Kyselymerkkijonon luominen Luodaksesi kyselymerkkijonon sinun tulee kyetä URL-koodaamaan tarvittavia avaimia ja arvoja. Olettakaamme, että haluat viedä URL:n sivulta toiselle osana kyselymerkkijonoa. Kauttaviivat ja kaksoispiste voivat aiheuttaa ongelmia jäsentelijälle. Siksi meidän on muunnettava URL heksadesimaalimerkeiksi. Voimme tehdä sen PHP:n urlencode()-funktiolla. Se ottaa argumentikseen merkkijonon ja palauttaa koodatun kopion: print urlencode(" // tulostaa http%3a%2f%2fwww.corrosive.co.uk Nyt kun osaat URL-koodata tekstisi, sinun tulee muodostaa oma kyselymerkkijonosi. Seuraava koodi muodostaa kyselymerkkijonon kahdesta muuttujasta:

13 19. Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla 349 <?php $interest = "arts"; $homepage = " $query = "homepage=".urlencode( $homepage ); $query.= "&interest=".urlencode( $interest );?> <A HREF="newpage.php?<?print $query?>">go</a> Selain näkee linkin URL tällaisena: newpage.php?homepage=http%3a%2f%2fwww.corrosive.co.uk&interest=arts Parametrit homepage ja interest ovat nyt newpage.php-sivun käytössä globaaleina muuttujina. Tämä lähestymistapa on kuitenkin kömpelö. Koska olemme kirjoittaneet muuttujien nimet suoraan kyselymerkkijonoon, koodin uudelleenkäyttö ei onnistu helposti. Viedäksemme tietoa tehokkaasti sivulta toiselle meidän tulee tehdä nimien ja arvojen lisääminen linkkiin helpoksi ja generoitava kyselymerkkijono automaattisesti. Se on erityisen tärkeää silloin, kun haluamme tarjota muille kuin ohjelmoijille hyvän työskentelyalustan PHP:n avulla. Listaus 19.5 luo funktion nimeltä qlink(), joka ottaa argumentikseen assosiatiivisen taulukon ja palauttaa kyselymerkkijonon. Listaus 19.5 Funktio, joka muodostaa kyselymerkkijonoja 1: <html> 2: <head> 3: <title>listing 19.5 A function to build query strings</title> 4: </head> 5: <body> 6: <?php 7: function qlink( $q ) 8: { 9: GLOBAL $QUERY_STRING; 10: if (! $q ) return $QUERY_STRING; 11: $ret = ""; 12: foreach( $q as $key => $val )

14 Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla 13: { 14: if ( strlen( $ret ) ) $ret.= "&"; 15: $ret.= urlencode( $key ). "=". urlencode( $val ); 16: } 17: return $ret; 18: } 19: $q = array ( name => "Arthur Harold Smith", 20: interest => "Cinema (mainly art house)", 21: homepage => `` 22: ); 23: print qlink( $q ); 24: // tulostaa name=arthur+harold+smith&interest=cinema+%28mainly+art+house 25: // %29&homepage=http%3A%2F%2Fwww.corrosive.co.uk%2Fharold%2F 26:?> 27: <p> 28: <a href="anotherpage.php?<? print qlink($q)?>">go!</a> 29: </p> 30: </body> 31: </html> Koodin qlink()-funktio ottaa argumentikseen assosiatiivisen taulukon, jonka se tallentaa muuttujaan $q. Jos $q ei ole asetettu, palautamme yksinkertaisesti nykyisen skriptin kyselymerkkijonon, joka on tallennettu $QUERY_STRING-muuttujaan. Tällä tavoin qlink()-funktiota voidaan käyttää viemään muuttumaton GETpyynnön tieto. Olettaen, että $q on asetettu, alustamme muuttujan nimeltä $ret sijoittamalla siihen tyhjän merkkijonon. Siinä tulee olemaan kyselymerkkijonomme. Funktiossa käytetään foreach-lausetta käymään läpi $q-taulukko ja sijoittamaan kukin avain muuttujaan $key ja kukin arvo muuttujaan $val. Avain/arvo-parit erotetaan toisistaan et-merkillä (&), joten jos emme ole ensimmäisellä silmukkakierroksella, tulostamme tämän merkin. Tiedämme, että $ret-muuttujan merkkijonon pituus on ensimmäisellä kierroksella nolla, joten voimme käyttää sitä seikkaa estämään et-merkin sijoittamisen merkkijonoon. Käytämme urlencode()-funktiota koodaamaan sekä $key- että $val-muuttujat ja lisäämään ne =-merkillä erotettuina $ret-muuttujaan. Lopuksi palautamme koodatun kyselymerkkijonon. Tällä funktiolla voimme viedä tietoa sivulta toiselle käyttäen samalla mahdollisimman vähän php-koodia HTML-elementtien sisällä.

15 19. Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla 351 Yhteenveto Tällä tunnilla tutkimme tietojen siirtämistä pyynnöstä toiselle. Menettelyjen avulla voit luoda moninäyttöisiä sovelluksia ja kehittyneitä ympäristöjä, jotka vastaavat käyttäjien asetuksia ja toiveita. Opit käyttämään setcookie()-funktiota, jolla asetetaan evästeitä käyttäjän selaimelle. Kehitimme menettelyä eteenpäin ja loimme tietokannan, jota voidaan käyttää evästeiden kanssa tallentamaan tietoa käyttäjistä istunnosta toiselle. Opit tekemään kyselymerkkijonoja ja koodaamaan niitä sekä kehittämään funktion, joka automatisoi niiden luomisen. K&V K Liittyykö evästeisiin mitään negatiivisia ja vakavia turvallisuus- tai yksityisyysnäkökohtia? V Palvelin voi päästä käsiksi vain evästeisiin, jotka on asetettu sen oman domainin kautta. Vaikka eväste voidaan tallentaa käyttäjän kiintolevylle, ei muualle käyttäjän tiedostojärjestelmään ole pääsyä. On kuitenkin mahdollista asettaa eväste kuvan pyytämisen yhteyteen. Niinpä jos usealla sivustolla on kolmannen osapuolen tarjoamia kuvia, voi tuo kolmas osapuoli jäljittää käyttäjän useiden domainien läpi. K Kyselymerkkijono näyttää rumalta selainikkunassa. Voiko sanoa, että evästeet ovat siistimpi tapa tallentaa tilatietoa? V Valitettavasti asia ei ole noin yksinkertainen. Parhaimmillaan evästeet ovat läpinäkyvä tapa tallentaa tilatietoa. Jotkut käyttäjät asettavat kuitenkin selaimensa varoittamaan joka kerta, kun eväste asetetaan. Nämä käyttäjät pitävät todennäköisesti sellaisia sivustoja, jotka tallentavat tilatietoja säännöllisesti, hieman turhauttavina. Työpaja Työpaja tarjoaa joukon kertauskysymyksiä, joiden avulla voit tarkistaa, oletko ymmärtänyt materiaalin sisältöä. Yritä ymmärtää vastaukset ennen kuin jatkat seuraaviin lukuihin. Vastaukset ovat liitteessä A. Kysymyksiä 1. Millä funktiolla voit asettaa evästeen vierailijan selaimelle? 2. Kuinka voit tuhota evästeen? 3. Millä funktiolla voit kiertää merkkijonon kyselymerkkijonossa? 4. Mikä sisäinen muuttuja sisältää raa'an kyselymerkkijonon? 5. Kyselymerkkijonon mukana viedyt nimi/arvo-parit ovat saatavilla globaaleina muuttujina. Ne voidaan myös sisällyttää sisäiseen assosiatiiviseen taulukkoon. Mikä sen nimi on?

16 Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla Toiminta 1. Luo käyttäjän asetuksia varten lomake, josta käyttäjä voi valita sivun värin ja antaa nimensä. Käytä evästettä varmistamaan, että käyttäjää tervehditään nimellä seuraavilla sivuilla ja että sivuille asetetaan käyttäjän valitsema väri. 2. Muokkaa edellisen tehtävän skriptiä niin, että käyttäjän kirjoittama tieto tallennetaan kyselymerkkijonoon eikä evästeeseen.

OPPITUNTI 20 Tilan tallentaminen istuntofunktioilla

OPPITUNTI 20 Tilan tallentaminen istuntofunktioilla 20. Tilan tallentaminen istuntofunktiolla 353 OPPITUNTI 20 Tilan tallentaminen istuntofunktioilla Edellisellä tunnilla tutkimme tilan tallentamista evästeiden ja kyselymerkkijonojen avulla. PHP4 on kuitenkin

Lisätiedot

Taustaa. CGI-ohjelmointi

Taustaa. CGI-ohjelmointi Taustaa CGI-ohjelmointi CGI = Common Gateway Interface Hyvin yksinkertainen ja helppo tapa toteuttaa dynaamisuutta ja interaktivisuutta htmldokumentteihin Kehitetty tiedon siirtoon palvelimen ja asiakasselaimen

Lisätiedot

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä: Linux-harjoitus 6 Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä: http://www.mysql.com/, MySQL-tietokantaohjelman kotisivu. http://www.mysql.com/doc/en/index.html,

Lisätiedot

13. Pintaa syvemmältä 233

13. Pintaa syvemmältä 233 13. Pintaa syvemmältä 233 OPPITUNTI 13 Pintaa syvemmältä Tällä tunnilla tutkimme joitakin funktioita, joilla saamme informaatiota ympäristöstä tai kommunikoimme ulkoisen maailman kanssa. Tämän tunnin aiheita

Lisätiedot

OPPITUNTI 12 MySQL-tietokannan käyttö

OPPITUNTI 12 MySQL-tietokannan käyttö 12. MySQL-tietokannankäyttö 211 OPPITUNTI 12 MySQL-tietokannan käyttö PHP-kieleen kuuluu olennaisesti tietokantojen käyttämisen helppous. Tällä tunnilla keskitymme MySQLtietokantaan, mutta samanlaisia

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

Lisätiedot

LINUX-HARJOITUS, MYSQL

LINUX-HARJOITUS, MYSQL LINUX-HARJOITUS, MYSQL Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä: http://www.mysql.com/, MySQL-tietokantaohjelman kotisivu. http://www.mysql.com/doc/en/index.html,

Lisätiedot

6. Funktiot 85. Kuinka funktioita määritellään ja kutsutaan. Kuinka funktioille viedään arvoja ja niistä palautetaan arvoja

6. Funktiot 85. Kuinka funktioita määritellään ja kutsutaan. Kuinka funktioille viedään arvoja ja niistä palautetaan arvoja 6. Funktiot 85 OPPITUNTI 6 Funktiot Funktiot ovat hyvin laaditun skriptin perusta. Ne tekevät koodista helppolukuista ja uudelleen käytettävää. Laajoja projekteja on mahdotonta hallita ilman funktioiden

Lisätiedot

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

Lisätiedot

11. oppitunti III. Viittaukset. Osa. Mikä on viittaus?

11. oppitunti III. Viittaukset. Osa. Mikä on viittaus? Osa III 11. oppitunti Viittaukset Kahdessa viime luvussa opit käyttämään osoittimia kohteiden käsittelyyn vapaalla muistialueella sekä viittaamaan noihin kohteisiin epäsuorasti. Tässä luvussa käsiteltävät

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

SELVITYSRAPORTTI LABRA-VERKON MYSQL:n JA PHP:n KÄYTTÖÖNOTOSTA. Jarkko Kähkönen

SELVITYSRAPORTTI LABRA-VERKON MYSQL:n JA PHP:n KÄYTTÖÖNOTOSTA. Jarkko Kähkönen SELVITYSRAPORTTI LABRA-VERKON MYSQL:n JA PHP:n KÄYTTÖÖNOTOSTA Sisällysluettelo Luku 1 - Oman LABRA-sivutilan asennus ja käyttöönotto... 2 1.1 - LABRA-osoitteesi... 2 1.2 LABRA-tilan käyttö (verkko-asemana

Lisätiedot

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014 18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 16.2.2010 1 / 41 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

Lisätiedot

WWW-PALVELUN KÄYTTÖÖNOTTO LOUNEA OY

WWW-PALVELUN KÄYTTÖÖNOTTO LOUNEA OY 1 WWW-PALVELUN KÄYTTÖÖNOTTO LOUNEA OY 10.4.2015 Lounea Oy Tehdaskatu 6, 24100 Salo Puh. 029 707 00 Y-tunnus 0139471-8 www.lounea.fi Asiakaspalvelu 0800 303 00 Yrityspalvelu 0800 303 01 Myymälät 0800 303

Lisätiedot

3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä.

3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä. PHP-kielen perusteet Käytä lähteenä PHP:n virallista manuaalia http://www.php.net/docs.php tai http://www.hudzilla.org/php (siirry Paul Hudsonin verkkokirjaan). Lisää materiaalia suomeksi esimerkiksi ohjelmointiputkan

Lisätiedot

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta Tiedonhallinnan perusteet H11 Ovien ja kulun valvontajärjestelmän tietokanta Nimi: Mikko Haapanen Opiskelijanumero: 0900568 Ryhmä: T09L Työ tehty: 15.3.2010 Mikko Haapanen 15.3.2010 1(7) 1. Asiakasvaatimukset

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet A271117, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

Lisätiedot

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include <iostream.h> 15: 16: int main() 17: {

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include <iostream.h> 15: 16: int main() 17: { Osa I 2. oppitunti C++-ohjelman osat Ennen kuin menemme yksityiskohtaisemmin sisälle C++-luokkiin, -muuttujiin jne, katsokaamme ensin, millaisista osista C++-ohjelma koostuu. Tämän tunnin aikana opit seuraavat

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla

Lisätiedot

OPPITUNTI 3 Ensimmäinen skripti

OPPITUNTI 3 Ensimmäinen skripti 3. Ensimmäinen skripti 35 OPPITUNTI 3 Ensimmäinen skripti Kun olet asentanut PHP:n ja asettanut sen kokoonpanon, on aika laittaa ohjelmisto testaukseen. Tällä tunnilla luot ensimmäisen skriptisi ja tutkit

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

OPPITUNTI 24 Esimerkki (Osa 2)

OPPITUNTI 24 Esimerkki (Osa 2) 24. Esimerkki (Osa 2) 429 OPPITUNTI 24 Esimerkki (Osa 2) Luvussa 23, "Esimerkki (Osa 1)" rakensimme ympäristön, joka sallii käyttäjien kirjoittautua palveluun ja lisätä kerho- ja tapahtumatiedot järjestelmään.

Lisätiedot

Osoitin ja viittaus C++:ssa

Osoitin ja viittaus C++:ssa Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja

Lisätiedot

Zeon PDF Driver Trial

Zeon PDF Driver Trial Matlab-harjoitus 2: Kuvaajien piirto, skriptit ja funktiot. Matlabohjelmoinnin perusteita Numeerinen integrointi trapezoidaalimenetelmällä voidaan tehdä komennolla trapz. Esimerkki: Vaimenevan eksponentiaalin

Lisätiedot

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja.

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja. laskutus_index http://media.stadia.fi/~0700527/laskutus/laskutus_index.html Sivu 1/1 13.12.2007 Laskutus -tietokanta Henkilöiden tiedot: Lisää uuden henkilön tiedot Muuta tai poista henkilön tiedot Selaa

Lisätiedot

OPPITUNTI 11 DBM-funktioiden käyttö

OPPITUNTI 11 DBM-funktioiden käyttö 11. DBM-funktioiden käyttö 193 OPPITUNTI 11 DBM-funktioiden käyttö Jos sinulla ei ole pääsyä SQL-tietokantaan, esimerkiksi MySQL- tai Oracle-tietokantaan, sinulla on varmaankin mahdollisuus käyttää DBM-tyylistä

Lisätiedot

SeaMonkey pikaopas - 1

SeaMonkey pikaopas - 1 SeaMonkey pikaopas SeaMonkey on ilmainen ja yksinkertainen www-sivujen teko-ohjelma. Sillä on kätevää koostaa yksinkertaisia sivuja ilman, että täytyy tietää jotain HTML-koodista. Tämä opas esittelee sivuston

Lisätiedot

KESKUSTANUORTEN NETTISIVUT- OHJEITA PIIRIYLLÄPITÄJÄLLE 1. KIRJAUTUMINEN

KESKUSTANUORTEN NETTISIVUT- OHJEITA PIIRIYLLÄPITÄJÄLLE 1. KIRJAUTUMINEN KESKUSTANUORTEN NETTISIVUT- OHJEITA PIIRIYLLÄPITÄJÄLLE 1. KIRJAUTUMINEN -Mene osoitteeseen keskustanuoret.fi/user - Kirjoita saamasi käyttäjätunnus ja salasana - Klikkaa yllä olevaa piirisi logoa niin

Lisätiedot

Webforum. Version 14.3 uudet ominaisuudet. Viimeisin päivitys: 2014-09-14

Webforum. Version 14.3 uudet ominaisuudet. Viimeisin päivitys: 2014-09-14 Webforum Version 14.3 uudet ominaisuudet Viimeisin päivitys: 2014-09-14 Sisältö Tietoja tästä dokumentista... 3 Yleistä... 4 Yleistä & hallinnointi... 5 Käyttäjien tuonti toiselta alustalta... 5 Uusi sisäänkirjautumisen

Lisätiedot

Innocent drinks Cookie Policy

Innocent drinks Cookie Policy Innocent drinks Cookie Policy Tässä evästekäytännössä kuvaillaan erilaisia evästeitä, joita saatetaan käyttää innocentin omistamalla ja kontrolloimalla sivustolla, jolta olet saapunut tähän evästekäytäntöön

Lisätiedot

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas Tiedonhallinnan perusteet Viikko 1 Jukka Lähetkangas Kurssilla käytävät asiat Tietokantojen toimintafilosofian ja -tekniikan perusteet Tiedonsäilönnän vaihtoehdot Tietokantojen suunnitteleminen internetiä

Lisätiedot

Luottamuksellinen sähköposti Trafissa

Luottamuksellinen sähköposti Trafissa OHJE 1 (8) Luottamuksellinen sähköposti Trafissa Trafi käyttää Deltagon Sec@GW -ohjelmistoa sähköpostin luottamuksellisuuden suojaamiseen. D-Envelope sovelluksen avulla viestien vastaanottaminen ei edellytä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.2.2011 1 / 37 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML AJAX-konsepti AJAX Asynchronous JavaScript And XML Viimeisin muoti-ilmiö web-ohjelmoinissa, termi Ajax tuli käyttöön vuoden 2005 aikana Joukko teknologioita, joiden avulla voidaan toteuttaa uudenlaisen

Lisätiedot

Written by Administrator Monday, 05 September 2011 15:14 - Last Updated Thursday, 23 February 2012 13:36

Written by Administrator Monday, 05 September 2011 15:14 - Last Updated Thursday, 23 February 2012 13:36 !!!!! Relaatiotietokannat ovat vallanneet markkinat tietokantojen osalta. Flat file on jäänyt siinä kehityksessä jalkoihin. Mutta sillä on kuitenkin tiettyjä etuja, joten ei se ole täysin kuollut. Flat

Lisätiedot

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö Tekijät: Eemeli Honkonen Joni Metsälä Työ palautettu: SISÄLLYSLUETTELO: 1 SEMINAARITYÖN KUVAUS... 3 2 TIETOKANTA... 3 2.1 MITÄ TIETOKANNAT SITTEN OVAT?... 3

Lisätiedot

12.10.2011. Erittäin nopea tapa saada kehitysympäristö php:lle pystyyn Voidaan asentaa muistitikulle

12.10.2011. Erittäin nopea tapa saada kehitysympäristö php:lle pystyyn Voidaan asentaa muistitikulle (Ei yhtään videota tällä kertaa.) X niin kuin Cross-Platform, Apache, MySql, PHP, Perl Kehitysympäristö EI tuotantokäyttöön Monet tärkeät tietoturva-asetukset ovat oletuksena pois päältä Erittäin nopea

Lisätiedot

TIETOKANTOJEN PERUSTEET MARKKU SUNI

TIETOKANTOJEN PERUSTEET MARKKU SUNI TIETOKANTOJEN PERUSTEET MARKKU SUNI SQL - KIELI TIETOJEN MUOKKAUS MARKKU SUNI Tarkastellaan tauluissa olevien tietojen muokkausta muokkauskäskyjä: INSERT UPDATE DELETE Kysymys kuuluu: Voiko tietoja muokata

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 17.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 17.2.2010 1 / 41 Sanakirja Monissa sovelluksissa on tallennettava rakenteeseen avain arvo-pareja. Myöhemmin rakenteesta

Lisätiedot

BLOGGER. ohjeita blogin pitämiseen Googlen Bloggerilla

BLOGGER. ohjeita blogin pitämiseen Googlen Bloggerilla BLOGGER ohjeita blogin pitämiseen Googlen Bloggerilla Sisältö Blogin luominen... 1 Uuden blogitekstin kirjoittaminen... 4 Kuvan lisääminen blogitekstiin... 5 Lisää kuva omalta koneelta... 6 Lisää kuva

Lisätiedot

Tietosuoja-portaali. päivittäjän ohje

Tietosuoja-portaali. päivittäjän ohje Tietosuoja-portaali päivittäjän ohje Maisa Kinnunen 2010 1 Sisältö PÄIVITTÄJÄN OHJE Kirjautuminen...3 Sivujen tekstin muokkaus...4 Tiedostojen lisääminen palvelimelle...9 Jos sinun pitää selvittää tiedoston/kuvan

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 3.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 1 / 36 Esimerkki: asunnon välityspalkkio Kirjoitetaan ohjelma, joka laskee kiinteistönvälittäjän asunnon

Lisätiedot

OPPITUNTI 21 Palvelinympäristö

OPPITUNTI 21 Palvelinympäristö 21. Palvelinympäristö 365 OPPITUNTI 21 Palvelinympäristö Edellisellä tunnilla tutkimme tekniikoita, joiden avulla voidaan kommunikoida etäkoneiden kanssa ja saada tietoa käyttäjiltä. Tällä tunnilla käsittelemme

Lisätiedot

Kirjasto Relaatiotietokannat Kevät 2001. Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

Kirjasto Relaatiotietokannat Kevät 2001. Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina Kirjasto Kevät 2001 Auvinen Annemari Niemi Anu Harjoitustyö 7.4.2001 Sisällysluettelo 1. Yleiskuvaus... 3 2. Vaatimukset... 3 2.1. Toiminnalliset... 3 2.1.1. Sisäänkirjautuminen... 3 2.1.2. Nimikkeiden

Lisätiedot

Asiointipalvelun ohje

Asiointipalvelun ohje Asiointipalvelun ohje Yleistä 1. Kirjautuminen 2. Yhteystiedot 3. Vastaustavan valinta 1. Yleistä 2. Palkkatietojen lataaminen tiedostosta 4. Lomake 1. Yleistä 2. Linkit ja vastaajan tiedot 3. Lomakekäsittely

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

Sonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje

Sonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje Sonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje Sisällysluettelo VIP Laajennettu raportointi... 3 Luo raportti Laajennetun raportoinnin työkaluilla... 4 Avaa Laajennettu raportointi... 4 Valitse

Lisätiedot

Ilmoitus saapuneesta turvasähköpostiviestistä

Ilmoitus saapuneesta turvasähköpostiviestistä Tullin turvasähköposti Asiakkaan ohje www.tulli.fi versio 2.2 8.1.2015 Korvaa version 2.1 22.5.2014 Tullin turvasähköposti Tulli lähettää sinulle sähköpostiviestin salattuna silloin, kun viesti tai sen

Lisätiedot

8. Oliot 123. Kuinka luokkia luodaan ja olioita saadaan aikaan. Kuinka luodaan ja käsitellään ominaisuuksia ja metodeja

8. Oliot 123. Kuinka luokkia luodaan ja olioita saadaan aikaan. Kuinka luodaan ja käsitellään ominaisuuksia ja metodeja 8. Oliot 123 OPPITUNTI 8 Oliot Oliopohjainen ohjelmointi on vaarallista. Se muuttaa koodaamista koskevia ajatuksiasi ja kun uudet käsitteet ovat saaneet jalansijaa, ne eivät katoa mitenkään. PHP on Perlin

Lisätiedot

T-111.361 Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot

T-111.361 Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot T-111.361 Hypermediadokumentin laatiminen -Ohjelmointi Peruskäsitys www-ohjelmoinnin kentästä Tekniikat interaktiivisuuden toteuttamiseen tekniikat tekniikat Tietokannat Juha Laitinen TKK/TML juha.laitinen@hut.fi

Lisätiedot

SQL Buddy JAMK Labranet Wiki

SQL Buddy JAMK Labranet Wiki Page 1 of 9 SQL Buddy JAMK Labranet Wiki Sisällysluettelo Yleistä SQL Buddy:sta kotisivu :http://sqlbuddy.com/ SQL Buddy on kevyt hallintatyökalu MySQL-tietokannalle. Järjestelmävaatimukset Serverin vaatimukset

Lisätiedot

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot) SQL sisältää operaatiot tietokannan sisällön muodostamiseen ja ylläpitoon: insert - uusien rivien vienti tauluun delete - rivien poisto update - rivien muutos 1 Insert lauseella on kaksi muotoa: insert

Lisätiedot

Hallintaliittymän käyttöohje

Hallintaliittymän käyttöohje Hallintaliittymän käyttöohje 1. Yleisiä huomioita Hallintaliittymän käyttöä helpottavia yleisiä huomioita: - Käytä listanäkymien hakukentissä kentän vieressä olevaa hakunappia, älä enter-näppäintä. - Älä

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 28.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2015 1 / 16 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 6 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/

Lisätiedot

Www-tallennuksen käyttöohje

Www-tallennuksen käyttöohje OPETUSHALLITUS Laskentapalvelut puh: (09) 7747 7090 E-mail: laskentapalvelut@oph.fi Www-tallennuksen käyttöohje Sisällys Käyttäjätunnukset Koulutuksen järjestäjä (saajatunnus) Laitokset/koulutusmuodot

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 8.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 8.2.2010 1 / 38 Debuggeri Tyypillinen tilanne: ohjelma on kirjoitettu, Python-tulkki ei valita virheistä, mutta ohjelma

Lisätiedot

MOBISITE-TYÖKALUN SISÄLTÄMÄT TOIMINNOT

MOBISITE-TYÖKALUN SISÄLTÄMÄT TOIMINNOT MOBISITE-TYÖKALU MobiSite on työkalu matkapuhelimeen soveltuvan mobiilisivuston rakentamiseen. AIMO-järjestelmän jatkuvasti päivittyvä päätelaitetunnistus tunnistaa useimmat puhelinmallit ja mukauttaa

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 22. huhtikuuta 2016 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille! Kirjoittamasi luokat, funktiot ja aliohjelmat

Lisätiedot

Julkinen. Suomen Pankin ja Finanssivalvonnan suojattu sähköposti: ulkoisen käyttäjän ohje

Julkinen. Suomen Pankin ja Finanssivalvonnan suojattu sähköposti: ulkoisen käyttäjän ohje Muistio 1 (7) Suomen Pankin ja Finanssivalvonnan suojattu sähköposti: ulkoisen käyttäjän ohje Sisällys 1 Johdanto... 1 2 Suojatun viestin vastaanottaminen... 1 3 Suojatun viestin lukeminen... 2 4 Vastaanotetun

Lisätiedot

Päivitysohje Opus Dental

Päivitysohje Opus Dental Päivitysohje Opus Dental 7.1.460 1. Päivitysohjelman lataaminen Avaa Opus Dental -internetsivu osoitteessa www.opusdental.com. Klikkaa etusivulta Suomen lippua avataksesi suomenkielisen sivuston. Valitse

Lisätiedot

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008 Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT Jouni Huotari S2008 2 Proseduurit Ohjelmamoduuleita, jotka voidaan tallettaa tietokantaan (DBMS:n tietohakemistoon)

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 11.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 11.2.2009 1 / 33 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin

Lisätiedot

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009 PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009 PROSEDUURIT Ohjelmamoduuleita, jotka voidaan tallettaa tietokantaan (DBMS:n tietohakemistoon)

Lisätiedot

Ohjelmassa on käytettävä funktiota laskeparkkimaksu laskemaan kunkin asiakkaan maksu. Funktio floor pyöristää luvun lähimmäksi kokonaisluvuksi.

Ohjelmassa on käytettävä funktiota laskeparkkimaksu laskemaan kunkin asiakkaan maksu. Funktio floor pyöristää luvun lähimmäksi kokonaisluvuksi. Tehtävä 24. Kallioparkki veloittaa 2 euroa kolmelta ensimmäiseltä pysäköintitunnilta. Yli kolmen tunnin pysäköinnistä veloitetaan lisäksi 0.5 euroa jokaiselta yli menevältä tunnilta. Kuitenkin maksimiveloitus

Lisätiedot

PHP tehtävä 3 Atte Pekarinen TIKT13A 4.12.2014

PHP tehtävä 3 Atte Pekarinen TIKT13A 4.12.2014 PHP-kielen perusteet 3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä. Heredoc on ominaisuus PHP-koodaamisessa, jolla voidaan kirjoittaa pitkiä tekstejä

Lisätiedot

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

Asko Ikävalko, k0201291 22.2.2004 TP02S-D. Ohjelmointi (C-kieli) Projektityö. Työn valvoja: Olli Hämäläinen

Asko Ikävalko, k0201291 22.2.2004 TP02S-D. Ohjelmointi (C-kieli) Projektityö. Työn valvoja: Olli Hämäläinen Asko Ikävalko, k0201291 22.2.2004 TP02S-D Ohjelmointi (C-kieli) Projektityö Työn valvoja: Olli Hämäläinen Asko Ikävalko LOPPURAPORTTI 1(11) Ratkaisun kuvaus Käytetyt tiedostot Tietuerakenteet Onnistuin

Lisätiedot

Digitaalisen median tekniikat, k2004 HY/TKTL, palvelinohjelmointi_1 21/04/2004. Harri Laine 1. Palvelinohjelmointi. Staattinen www-sivu

Digitaalisen median tekniikat, k2004 HY/TKTL, palvelinohjelmointi_1 21/04/2004. Harri Laine 1. Palvelinohjelmointi. Staattinen www-sivu Digitaalisen median tekniikat Staattinen www-sivu Palvelimelle tallennettu valmis sivu Sama URL antaa aina saman sisällön Teknisesti sivu voi muodostua monesta osasta, esimerkiksi kuvat ovat eri tiedostoja

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 3.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 3.3.2010 1 / 44 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

Ohje luottamuksellista tietoa sisältävien sähköpostiviestien lähettämiseen ja vastaanottamiseen

Ohje luottamuksellista tietoa sisältävien sähköpostiviestien lähettämiseen ja vastaanottamiseen Ohje luottamuksellista tietoa sisältävien sähköpostiviestien lähettämiseen ja vastaanottamiseen Liikenteen turvallisuusvirasto 27.9.2012 Sisällysluettelo Luottamuksellista tietoa sisältävien sähköpostiviestien

Lisätiedot

Käytin tehtävän tekemiseen Xubuntu 13.04 -käyttöjärjestelmää aikaisemmin tekemältäni LiveUSB-tikulta.

Käytin tehtävän tekemiseen Xubuntu 13.04 -käyttöjärjestelmää aikaisemmin tekemältäni LiveUSB-tikulta. Tehtävänanto - Asenna ja testaa LAMP - Aiheuta vähintään 3 virhettä ja analysoi lokista - Tee nimipohjainen virtuaalipalvelin, joissa toimii myös www. (Karvinen, T. 23.09.2013) Työympäristö Tein tehtävän

Lisätiedot

Digitaalisen median tekniikat. Palvelinohjelmointi Harri Laine 1

Digitaalisen median tekniikat. Palvelinohjelmointi Harri Laine 1 Digitaalisen median tekniikat Palvelinohjelmointi 21.4.2004 Harri Laine 1 Palvelinohjelmointi Staattinen www-sivu Palvelimelle tallennettu valmis sivu Sama URL antaa aina saman sisällön Teknisesti sivu

Lisätiedot

QR-koodit INNOSTAVAA HAUSKAA PALJON KÄYTTÖTAPJA HELPPOA ILMAISTA MOTIVOIVAA

QR-koodit INNOSTAVAA HAUSKAA PALJON KÄYTTÖTAPJA HELPPOA ILMAISTA MOTIVOIVAA QR-koodit QR-koodit INNOSTAVAA HAUSKAA PALJON KÄYTTÖTAPJA HELPPOA MOTIVOIVAA ILMAISTA QR-koodi paljon tietoa Koodin avulla pääsee nopeasti halutulle verkkosivulle tai esim. YouTube-videoon ilman osoitteen

Lisätiedot

Digitaalisen median tekniikat. Palvelinohjelmointi

Digitaalisen median tekniikat. Palvelinohjelmointi Digitaalisen median tekniikat Palvelinohjelmointi 21.4.2004 Harri Laine 1 Palvelinohjelmointi Staattinen www-sivu Palvelimelle tallennettu valmis sivu Sama URL antaa aina saman sisällön Teknisesti sivu

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 4.10.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 4.10.2017 1 / 23 Mahdollisuus antaa luentopalautetta Luennon aikana voit kirjoittaa kommentteja ja kysymyksiä sivulle

Lisätiedot

Tapahtumakalenteri & Jäsentietojärjestelmä Ylläpito

Tapahtumakalenteri & Jäsentietojärjestelmä Ylläpito Tapahtumakalenteri & Jäsentietojärjestelmä Ylläpito Henri Kinnunen, Seppo Tompuri, Tero Malkki, Matti Heiskanen, Tommi Rönkönharju, Tuomas Valkeapää Sisällysluettelo 1. Alkusanat.2 2. Asennusohje..2 3.

Lisätiedot

UTIFLEET-VARAUSJÄRJESTELMÄ KÄYTTÄJÄN OHJE. Gospel Flight ry

UTIFLEET-VARAUSJÄRJESTELMÄ KÄYTTÄJÄN OHJE. Gospel Flight ry UTIFLEET-VARAUSJÄRJESTELMÄ Gospel Flight ry Versio 1.0 Hyväksytty Tekijä 1.11.2005 Tarkastanut 1.11.2005 Hyväksynyt Juha Huttunen 3.11.2005 Helia UTIFLEET-TIETOJÄRJESTELMÄ 2 SISÄLLYS 1 SOVELLUKSEN KÄYTTÖOIKEUDET

Lisätiedot

ALVin käyttöohjeet. Kuvaus, rajaus ja tallennus puhelimella ALVin -mobiilisovelluksen avulla dokumentit kuvataan, rajataan ja tallennetaan palveluun.

ALVin käyttöohjeet. Kuvaus, rajaus ja tallennus puhelimella ALVin -mobiilisovelluksen avulla dokumentit kuvataan, rajataan ja tallennetaan palveluun. ALVin käyttöohjeet Nämä käyttöohjeet sisältävät hyödyllisiä vinkkejä palvelun käyttöön. Ne kannattaa lukea ennen palvelun käyttöä. Jos kuitenkin kohtaat ongelmia etkä löydä niihin ratkaisua näistä käyttöohjeista

Lisätiedot

Harri Laine 1. Digitaalisen median tekniikat, s2007 HY/TKTL, palvelinohjelmointi_1. Palvelinohjelmointi

Harri Laine 1. Digitaalisen median tekniikat, s2007 HY/TKTL, palvelinohjelmointi_1. Palvelinohjelmointi Digitaalisen median tekniikat Staattinen www-sivu Palvelimelle tallennettu valmis sivu Sama URL antaa aina saman sisällön Teknisesti sivu voi muodostua monesta osasta, esimerkiksi kuvat ovat eri tiedostoja

Lisätiedot

DNA Toimistoviestintä Microsoft - sähköposti

DNA Toimistoviestintä Microsoft - sähköposti DNA Toimistoviestintä Microsoft - sähköposti 30.10.2013 Luottamuksellinen MS Outlook, Standard postitilin asennus 1/6 Käynnistä Outlook 2010. Seuraava näyttö avautuu Valitse Next (Seuraava). 2 MS Outlook,

Lisätiedot

Harjoitustyön testaus. Juha Taina

Harjoitustyön testaus. Juha Taina Harjoitustyön testaus Juha Taina 1. Johdanto Ohjelman teko on muutakin kuin koodausta. Oleellinen osa on selvittää, että ohjelma toimii oikein. Tätä sanotaan ohjelman validoinniksi. Eräs keino validoida

Lisätiedot

CMS Made Simple Perusteet

CMS Made Simple Perusteet CMS Made Simple Perusteet 1. Hallintaan kirjautuminen Kirjautumisruutuun pääset lisäämällä osakaskuntasi www-osoitteen perään liitteen /admin. Käyttäjätunnuksena toimii onkija ja salasanana postitse saamasi

Lisätiedot

Verkkokaupan ohje. Alkutieto. Scanlase verkkokauppa. Sisäänkirjautuminen

Verkkokaupan ohje. Alkutieto. Scanlase verkkokauppa. Sisäänkirjautuminen Verkkokaupan ohje Alkutieto Verkkokaupan tarkoitus on helpottaa Scanlase asiakkaiden tilaamisprosessia kun asiakkaat tarvitsevat tuotteita. Verkkokaupan ollessa pois toiminnasta tilaukset tulee tehdä puhelimitse

Lisätiedot

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukot C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukon muuttujilla (muistipaikoilla) on yhteinen nimi. Jokaiseen yksittäiseen

Lisätiedot

Ennakkosuunnitelman luonti

Ennakkosuunnitelman luonti Elokuu 2019 JETI-pikaohje Ennakkosuunnitelman luonti Tämän dokumentin sisällöstä Tämä dokumentti on pikaohje ennakkosuunnitelman laadinnasta ja koskee seuraavia ennakkosuunnitelman luomisen vaiheita: 1.

Lisätiedot

ASCII-taidetta. Intro: Python

ASCII-taidetta. Intro: Python Python 1 ASCII-taidetta All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/18cplpy to find out what to do.

Lisätiedot

F-Secure KEY salasanojenhallintaohjelman käyttöönotto Mac -laitteella

F-Secure KEY salasanojenhallintaohjelman käyttöönotto Mac -laitteella F-Secure KEY salasanojenhallintaohjelman käyttöönotto Mac -laitteella 1 F-Secure KEY F-Secure KEY on palvelu, joka tallentaa turvallisesti kaikki henkilökohtaiset tunnistetiedot, kuten salasanat ja maksukorttitiedot,

Lisätiedot

Kotisivuohjeet. Eteläpohjalaiset Kylät ry. Sivupohjien rakenne

Kotisivuohjeet. Eteläpohjalaiset Kylät ry. Sivupohjien rakenne Kotisivuohjeet Tässä ohjeessa käydään läpi kotisivujen tekemisen perusteet keskittyen html-koodiin ja sen ominaisuuksiin. Sivupohjissa ulkoasu ja rakenne on pääasiassa jaettu erilliseen css-tyylitiedostoon,

Lisätiedot

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen Esimerkki: Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen Luo tietokanta Koulu. Tietokantaan lisätään 3 taulua. Kurssit-taulu: kurssiid not null primary key INTEGER aineid not

Lisätiedot

Android. Sähköpostin määritys. Tässä oppaassa kuvataan uuden sähköpostitilin käyttöönotto Android 4.0.3 Ice Cream Sandwichissä.

Android. Sähköpostin määritys. Tässä oppaassa kuvataan uuden sähköpostitilin käyttöönotto Android 4.0.3 Ice Cream Sandwichissä. Y K S I K Ä Ä N A S I A K A S E I O L E M E I L L E LI I A N P I E NI TAI M I K Ä Ä N H A A S T E LI I A N S U U R I. Android Sähköpostin määritys Määrittämällä sähköpostitilisi Android-laitteeseesi, voit

Lisätiedot

K U U L A L A A K E R I LUOTTAMUKSELLINEN 1(6)

K U U L A L A A K E R I LUOTTAMUKSELLINEN 1(6) K U U L A L A A K E R I LUOTTAMUKSELLINEN 1(6) Messto HTTP API Messto HTTP API on sovelluskehittäjiä varten kehitetty helppo tapa toteuttaa tekstiviesti- ja multimediaviestisovelluksia. Rajapinnan avulla

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

Lisätiedot