istunnon hallinta php:llä

94
Istunnon hallinta PHP:llä tMyn 1 Istunnon hallinta PHP:llä Istunnon hallinta, session control. Istunnolla tarkoitetaan sellaista toisiinsa yhteenkuuluvaa kokoelmaa HTTP-pyyntöjä ja – vastauksia, joille voidaan määritellä aloitus- ja lopetustapahtuma. Usein istunto alkaa sisäänkirjautumisella, jonka yhteydessä käyttäjä autentikoituu saadakseen valtuutuksen niihin toimenpiteisiin, joita istunnon aikana on tarkoitus tehdä. Tällainen istunto voi muodostua esim. asioinnista verkkopankissa: istunto alkaa sisäänkirjautumisesta ja päättyy uloskirjautumiseen.

Upload: desirae-rodriquez

Post on 31-Dec-2015

61 views

Category:

Documents


0 download

DESCRIPTION

Istunnon hallinta PHP:llä. Istunnon hallinta, session control. Istunnolla tarkoitetaan sellaista toisiinsa yhteenkuuluvaa kokoelmaa HTTP-pyyntöjä ja –vastauksia, joille voidaan määritellä aloitus- ja lopetustapahtuma. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 1

Istunnon hallinta PHP:llä

• Istunnon hallinta, session control.• Istunnolla tarkoitetaan sellaista toisiinsa yhteenkuuluvaa

kokoelmaa HTTP-pyyntöjä ja –vastauksia, joille voidaan määritellä aloitus- ja lopetustapahtuma.

• Usein istunto alkaa sisäänkirjautumisella, jonka yhteydessä käyttäjä autentikoituu saadakseen valtuutuksen niihin toimenpiteisiin, joita istunnon aikana on tarkoitus tehdä.

• Tällainen istunto voi muodostua esim. asioinnista verkkopankissa: istunto alkaa sisäänkirjautumisesta ja päättyy uloskirjautumiseen.

Page 2: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 2

• Autorisointi tarkoittaa valtuuttamista, kuten esim. käyttöoikeuksien antamista tiettyihin resursseihin.

• Autentikoinnilla tarkoitetaan niitä menetelmiä, joilla tiettyihin resursseihin valtuutetut eli autorisoidut käyttäjät voidaan tunnistaa.

• Web-sovelluksissa voidaan käyttää useita erilaisia autorisointi- ja autentikointimenetelmiä, ja usein näiden tekniikoiden käyttö kietoutuu toisiinsa.

• HTTP-protokollan tilattomuuden seurauksena kaikissa autentikointimenetelmissä– Selain joutuu lähettämään autentikointitietonsa jokaisen pyynnön

yhteydessä ja – Palvelin joutuu tarkistamaan autentikointitiedon oikeellisuuden

jokaisella vastauskerralla.

Page 3: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 3

• Ainoastaan HTTPS-protokollaa (SSL) käyttäen voidaan lähettää autentikointitiedot luotettavasti siten, ettei niitä voida verkkoa kuuntelemalla selvittää.

• Aloitetaan yksinkertaisella esimerkillä. Tässä käyttäjätunnus ja salasana on suoraan koodattu skriptiin (ei kovin järkevää käytännössä…). Samaten, kun henkilö antaa salasanansa, niin se siirtyy selaimelta palvelimelle salaamattomana.

bool empty ( mixed $var )Determine whether a variable is considered to be empty.

Page 4: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 4

Page 5: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 5

Page 6: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 6

Jos annetaan oikea käyttäjätunnus ja salasana…:

Page 7: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 7

Niin kaikki onnistuu:

Page 8: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 8

Jos annat väärän käyttäjätunnuksen tai salasanan…:

Page 9: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 9

Niin mikään ei onnistuu:

Page 10: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 10

Jos jätät jommankumman kentän tyhjäksi, niin silloin jäätjunnaamaan paikalle:

Page 11: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 11

Page 12: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 12

• Koodi olisi voitu myös kirjoittaa vanhaan tyyliin, eli tutkimalla aluksi onko lähetä-painiketta (submit) painettu:

Page 13: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 13

Page 14: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 14

Page 15: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 15

Page 16: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 16

• Muutetaan edellä esitettyä ratkaisua siten, että käydään tarkistamassa sisäänkirjautumisen oikeellisuus tietokannan taulusta.

• Luodaan tietokanta sisaanKirjautuminen ja sinne taulu autorisoidutKayttajat:

Page 17: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 17

Page 18: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 18

Page 19: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 19

Page 20: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 20

• Lisätään pari autorisoitua käyttäjää järjestelmälle:

• Aluksi siis salasanat ovat tietokannan taulussa suojaamattomassa, ei salatussa muodossa.

Page 21: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 21

Page 22: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 22

Vastaava PHP-koodi näyttää tältä:

Page 23: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 23

Page 24: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 24

Page 25: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 25

Page 26: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 26

Page 27: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 27

Seuraavaksi testi selaimella:

Page 28: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 28

Page 29: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 29

Page 30: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 30

Page 31: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 31

• Äskeisessä sovelluksessa salasana oli suojaamattomana tietokannan taululla. Se on tarpeeton lisäriski.

• Tehdään pieni muutos: käytetään SHA-1 –algoritmia (one-way cryptographic hash function) salasanan salaamiseen.

• Koska kyseessä on yksisuuntainen salainalgoritmi, ei salattua merkkijonoa voida palauttaa alkuperäiseksi.

• Siksi on tehtävä testi

if tietokannanSalasana==sha1(annettuSalasana)

Page 32: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 32

• Tehdään siis lisäys tietokannan tauluun:

Page 33: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 33

pseudo-random 40-character string

Page 34: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 34

string sha1 ( string $str [, bool $raw_output ] )

The sha1() function calculates the SHA-1 hash of a string.The sha1() function uses the US Secure Hash Algorithm 1.From RFC 3174 - The US Secure Hash Algorithm 1: "SHA-1 produces a 160-bit output called a message digest. The message digest can then, for example, be input to a signature algorithm which generates or verifies the signature for the message. Signing the message digest rather than the message often improves the efficiency of the process because the message digest is usually much smaller in size than the message. The same hash algorithm must be used by the verifier of a digital signature as was used by the creator of the digital signature."This function returns the calculated SHA-1 hash on success (default, 40 character hex number ), or FALSE on failure.

Page 35: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 35

• Muutos PHP-koodissa on siis:

• Huom! Nyt vain tuo viimeinen salasana on suojattu, tämä koodi ei siis toimisi kahden aiemman vaihtoehdon kanssa ennen kuin nekin salasanat olisi salattu!

Page 36: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 36

Page 37: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 37

HTTP Basic Authentication on eräs yleisistä tavoista suorittaa autentikointi (ei edusta korkeata turvallisuustasoa!) web-sovelluksissa.

• Se toimii seuraavalla tavalla:1. Web-selain lähettää HTTP-pyynnön sellaiseen resurssiin (URL), jossa palvelin vaatii autentikointia.2. Web-palvelin (tai palvelinskripti) yrittää lukea autentikointitiedot selaimen mahdollisesti lähettämästä Authorization-nimisestä otsakkeesta. Koska selain ei ole tällaista (vielä) lähettänyt, niin

Page 38: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 38

3. Web-palvelin pyytää selainta lähettämään pyyntönsä mukana myös Authorization-nimisen otsakkeen arvonaan autentikointitiedot. Tämä tapahtuu lähettämällä seuraava HTTP-tilarivi ja HTTP-otsake:

HTTP/1.0 401 Unauthorized

WWW-Authenticate: Basic realm=”jotakinJärkevääTähän”

4. Vastaus otsakkeineen aiheuttaa selaimessa sen, että selain tarjoaa käyttäjälle ikkunan, jossa kysytään käyttäjätunnusta ja salasanaa.

Page 39: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 39

5. Kysyttyään autentikointitiedot selain lähettää uuden HTTP-pyynnön lisättynä Authorization-otsakkeella:

Authorization: Basic xyz…

Jossa xyz… on BASE64-koodattu merkkijono muodossa tunnus:salasana. Selain tallentaa samalla tiedot muistiinsa siten, että URL:in alkuosa hakupolkuineen yhdessä realm-määritteen kanssa muodostaa tunnisteen tähän suojattuun alueeseen. Jatkossa autentikointitiedot lähetetään automaattisesti, jos tunniste vastaa pyyntöön.

Page 40: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 40

• Normaalisti selaimet poistavat nämä autentikointitiedot muististaan, kun ne suljetaan. Koska selain lähettää autentikointitietonsa vain tietyllä tavalla alkaviin osoitteisiin (URL), käyttäjä voi selailla välillä muita sivuja palatakseen suojatulle alueelle myöhemmin ilman että autentikointitietoja kysytään uudelleen.

Page 41: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 41

6. Web-selain (esim. palvelinskripti) purkaa BASE64-koodatun merkkijonon tunnukseksi ja salasanaksi ja yleensä vertaa tietoja joko ohjelmakoodiin, salasanatiedostoon tai tietokantaan tallennettuihin tietoihin. Jos tunnus ja sitä vastaava salasana täsmäävät, palvelin sallii käyttäjän päästä käsiksi niihin tietoihin, joita autentikointi koskee.

7. Jatkossa selain lähettää autentikointitietonsa jokaisen sellaisen HTTP-pyynnön yhteydessä, jossa tallennettu tunniste vastaa pyyntöä (URL:n alkuosa ja realm-määrite sama). Palvelin vastaavasti tarkistaa lähetetyt autentikointitiedot ennen jokaista HTTP-vastausta.

Page 42: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 42

• Käytännössä edellä mainittu menettely voidaan toteuttaa:

1. Web-palvelimen konfiguraatiolla esim. käyttäen Apache-palvelimen .htaccess-tiedostossa annettavia määrittelyjä. Tällöin web-palvelin lähettää edellä kuvatut otsakkeet ja tarvittaessa hyväksyy käyttäjätunnuksen ja salasanan. Tällöin käytännössä palvelin selailee käytettyä salasanatiedostoa (usein nimetty .htpasswd) jokaisen pyynnön yhteydessä.

2. Itse ohjelmoidulla PHP-skriptillä.

Page 43: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 43

• Kokeillaan tätä 2-vaihtoehtoa.• PHP purkaa selaimen Authorization-otsakkeessa

lähettämän autentikointitiedoston globaaleihin muuttujiin seuraavasti:

$_SERVER[’PHP_AUTH_USER’] – Käyttäjätunnus

$_SERVER[’PHP_AUTH_PW’] – Salasana

• Seuraavassa esimerkissä selaimelta ainoastaan pyydetään autentikointitietoja, mutta niitä ei mitenkään tarkisteta:

Page 44: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 44

Katsotaan miltä yllä oleva skripti näyttää selaimeltakäynnistettynä:

Page 45: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 45

Page 46: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 46

void header ( string $string [, bool $replace [, int $http_response_code ]] )header() is used to send a raw HTTP header. See the » HTTP/1.1 specification for more information on HTTP headers. Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include(), or require(), functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file. <html><?php/* This will give an error. Note the output * above, which is before the header() call */header('Location: http://www.example.com/');?> Parametersstring

Page 47: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 47

The header string. There are two special-case header calls. The first is a header that starts with the string "HTTP/" (case is not significant), which will be used to figure out the HTTP status code to send. For example, if you have configured Apache to use a PHP script to handle requests for missing files (using the ErrorDocument directive), you may want to make sure that your script generates the proper status code. <?phpheader("HTTP/1.0 404 Not Found");?> The second special case is the "Location:" header. Not only does it send this header back to the browser, but it also returns a REDIRECT (302) status code to the browser unless some 3xx status code has already been set. <?phpheader("Location: http://www.example.com/"); /* Redirect browser */

/* Make sure that code below does not get executed when we redirect. */exit;?>

Page 48: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 48

• Istunnon luominen web-sovellukseen on hankalaa, koska HTTP on tilaton protokolla, eikä sen avulla ole mahdollista pitää yllä tilatietoa peräkkäisten siirtotapahtumien välillä. HTTP on pyyntö-vastaus –protokolla, jossa siirtotapahtumat alkavat ainoastaan selaimen pyynnöstä. Koska palvelimen pitää pystyä tunnistamaan samaan istuntoon liittyvät pyynnöt, sen on ylläpidettävä sovelluksen tilatietoja asiakaspäässä. Tilanteesta riippuen tilatiedon ylläpito tapahtuu palvelinskriptin luomissa tai asettamissa1. HTML-lomakkeen kenttien arvoissa tai hyperlinkeissä GET-metodilla palautettavana (hakulauseke, query string)2. HTML-lomakkeen kenttien arvoissa POST-metodilla palautettavana (input type=”hidden”)

Page 49: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 49

3. selaimen erityisissä muistialueissa (siis esim. HTTP Basic Authentication)

4. evästeissä (cookies). Istunto (session) hallitaan evästeiden kanssa.

• Sovelluksen tyypistä riippuen tilatietojen suhteen voidaan menetellä seuraavasti:

A. Jokaisen siirtotapahtuman yhteydessä kuljetetaan osa tai kaikki ylläpidettävästä datasta tai

B. Generoidaan aluksi istuntokohtainen tunniste ja kuljetetaan vain sitä jokaisen siirtotapahtuman yhteydessä.

Page 50: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 50

• Vaihtoehdossa B palvelinskripti vertaa jokaisen pyynnön yhteydessä selaimelta saamaansa tunnistetta palvelimelle tallennettuun vastineeseen ja liittää siihen mahdollisesti halutussa tietovarastossa (tekstitiedosto, tietokanta) säilytetyn muun datan.

Page 51: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 51

• Tehdään yksinkertainen ohjelma, jossa käynnistetään istunto.

Session variables: $_SESSIONAn associative array containing session variables available to the current script. This is a 'superglobal', or automatic global, variable. This simply means that it is available in all scopes throughout a script.

bool session_start( ) Initializes a ession by either creating a new session or using an identified one. Checks for the variable $PHPSESSID in the HTTP request. If a session identifier isn't included in the request, or an identified session isn't found, a new session is created. If a session ID is included in the request, and a session isn't found, a new session is created with the PHPSESSID encoded in the request. When an existing session is found, the session variables are read from the session store and initialized. Using PHP's default settings, a new session is created as a file in the /tmp directory. This function always returns true.

Page 52: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 52

Page 53: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 53

• Käytettäessä sovellusta vaikkapa kahdella selaimella (Explorer ja Mozilla) huomataan, että molemmissa laskurin arvo kasvaa omaa tahtiansa latauksien mukaan. Lisäksi huomataan, että laskuri ei menetä tietojansa, vaikka välillä vierailtaisiinkin muilla sivuilla. Jos selain suljetaan tilapäisesti, laskurin lukema alkaa juosta alusta.

Page 54: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 54

Page 55: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 55

Page 56: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 56

• Otetaan vielä selville mikä on istunnon tunnus, jonka session_start()-funktio luo.

string session_id([string id]) Can be used in two ways: to return the ID of an initialized session and to set the value of a session ID before a session is created. When used to return the session ID, the function must be called without arguments after a session has been initialized. When used to set the value of the session ID, the function must be called with the ID as the parameter before the session has been initialized.

string session_name ([ string $name ] ) Get and/or set the current session name.session_name() returns the name of the current session.

Page 57: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 57

Page 58: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 58

Miksi vastanyt!!!

Page 59: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 59

• Ohjelman toiminta on seuraava:• Ensimmäisellä HTTP-pyynnöllä session_start()-funktio

luo palvelimen kannalta yksikäsitteisen tunnisteen, joka tallennetaan sekä palvelimelle että asetetaan (oletusarvoisesti) selaimen PHPSESSID-nimisen evästeen arvoksi. Arvo voisi olla vaikkapa (32 tavua!) 4d5395e6a9c74ea1c0ec9ad0d88ffb0a.

• Istuntoon liittyviä muuttujia voidaan varata $_SESSION-taulukosta. Esim. $_SESSION[’laskuri’] on istuntokohtainen muuttuja, jonka arvo säilytetään palvelimella kutsukerrasta toiseen. Samaan istuntoon kuuluvat pyynnöt tunnistetaan selaimen evästeenä lähettämästä tunnisteesta.

Page 60: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 60

• Kun ohjelmaa kutsutaan toista tai useampaa kertaa siten, että selain lähettää istuntotunnisteen, session_start()-funktio palauttaa tähän istuntoon liittyvän datan käytettäväksi. Tässä tapauksessa muuttujan $_SESSION[’laskuri’] arvo palautetaan istuntoon talletetusta säilöstä.

• Evästeen elinaika on oletuksena 0, joten selain poistaa sen sammutuksensa yhteydessä muistista. Kun selain käynnistetään uudelleen ja ohjelmaa kutsutaan, sen on luotava uusi istuntotunniste, johon liittyvä data on oletusarvoissaan.

Page 61: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 61

• Tehdään seuraavaksi esimerkki, jossa käynnistetään istunto, asetetaan yksi istuntokohtainen muuttuja, poistetaan se (unset()), ja lopuksi päätetään istunto (session_destroy()).

Page 62: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 62

• PHP käyttää oletusarvoisesti evästeitä istunnonhallinnassa. Jos siis mahdollista, niin istunnon ID tallennetaan selaimeen evästeenä.

• Toisena mahdollisuutena on lisätä istunnon ID mukaan URL:iin. Tämä tapahtuisi automaattisesti, jos php.ini-tiedostossa olisi asetettu direktiivi session.use_trans_sid=1. Katsotaan, että näin ei ole:

Page 63: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 63

bool session_destroy( ) Removes the session from the PHP session management. With PHP's default settings, a call to this function removes the session file from the /tmp directory. Returns true if the session is successfully destroyed and false otherwise.

void unset ( mixed $var [, mixed $var [, mixed $... ]] )unset () is used to destroy a variable in PHP. In can be used to remove a single variable, multiple variables, or an element from an array.

Page 64: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 64

Page 65: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 65

Page 66: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 66

Page 67: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 67

Page 68: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 68

Page 69: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 69

Page 70: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 70

• Varmaankin yleisin käyttö istunnonhallinnalle liittyy käyttäjien tekemien toimenpiteiden seurantaan sellaisessa tilanteessa missä käyttäjä on autentikoitunut johonkin järjestelmään jonkinlaisen login-mekanismin välityksellä.

• Tehdään tästä lyhyt esimerkki, joka koostuu kolmesta skriptistä. Ensimmäinen skripti, sisaanKirjautuminen4.php, sisältää sisäänkirjautumislomakkeen ja autentikointiprosessoinnin (verrataan annettua käyttäjätunnusta ja salasanaa tietokannan taulun käyttäjätunnuksiin ja salattuihin salasanoihin).

Page 71: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 71

• Toinen skripti, vainJasenille.php, näyttää informaation vain sellaisille käyttäjille, jotka ovat onnistuneet kirjautumaan järjestelmän käyttäjiksi. Kolmas skripti, logout.php, poistaa käyttäjän järjestelmästä.

• Seuraavaksi kunkin skriptin sisältö:

Page 72: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 72

Page 73: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 73

Page 74: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 74

Page 75: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 75

Page 76: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 76

Page 77: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 77

Page 78: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 78

Page 79: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 79

Page 80: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 80

Käynnistetään ohjelma ensimmäisen kerran, ja kirjaudutaan sisään kelvollisilla tunnuksilla:

Page 81: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 81

Nyt on mahdollista mennä ”Vain Jäsenille” –alueelle:

Page 82: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 82

Palataan seuraavaksi Pääsivulle:

Page 83: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 83

Käydään välillä muualla, mutta ei siis suljeta selainta:

Page 84: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 84

Palataan sitten Pääsivulle:

Page 85: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 85

Eli kyllä Jakke Jäyhä muistettiin vielä! Kirjaudutaan ulos:

Page 86: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 86

Kokeillaan kirjautumista oikealla käyttäjätunnuksellamutta väärällä salasanalla:

Page 87: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 87

Page 88: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 88

Page 89: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 89

Yritetään oikaista suoraan ”Vain Jäsenille” –sivulle:

Page 90: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 90

Page 91: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 91

• Edellä olevan toteuttamiseksi tietokantaa luotiin uusi taulu:

Page 92: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 92

Page 93: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 93

Page 94: Istunnon hallinta PHP:llä

Istunnon hallinta PHP:llä tMyn 94