Validointi ja dynaamiset lomakkeet - Luento 6
Jatketaan lomakkeen käsittelyä PHP:lla. Aiheina validointi, oletusarvon täyttö, moniulotteiset taulukot ja dynaamiset lomakkeet. Käydään viikkotehtävä 2 läpi.
Luentotaltiointi
- sovellukset06.wmv 57M
- sovellukset06.mp3 16M
- sovellukset06_xvid.avi 127M
Viikkotehtävä 2
Huomioita
- Lomakkeelta tulevien tietojen tarkistamisessa voi käyttää seuraavia funktioita: print_r, var_dump ja var_export.
- Luentovideolla yritettiin tutkia onko
$testi-muuttujafalsevaitrue. Tämä luonnollisesti onnistuisi helpoiten seuraavasti:
Näin saadaan tyyppi ja arvo esille debuggauksessa.$testi = isset($_GET['luo']); var_dump($testi); - Tarkistakaa mitä lomakkeelta tulee! Ei ole varmaa antaako käyttäjä numeroa tai ylipäätään mitään.
- Mallivastauksissa on nyt selitteet, miten tarkistuksia kannattaisi tehdä.
Pienempiä huomioita:
- Tyylejä ei kannata upottaa XHTML:ään, heikentää päivitettävyyttä.
Käytetään erillisessä CSS-tiedostossa elementtiselektoreja ja tarvittaessa
class- jaid-ominaisuuksia. - Ei
b-elementtiä, käyttäkäästrong-elementtiä. th-elementeissä olisi syytä muistaascope-ominaisuus.
PHP-koodin debuggaus
Vielä debug-mahdollisuudet kertauksena:
- komentorivillä php-tiedoston sisältämässä hakemistossa
php index.php
- PHP-tiedoston alkuun komennot
error_reporting(E_ALL); ini_set('display_errors', '1');Virheet näkyvät www-sivulla. Näyttää users.jyu.fi:ssä ainoastaan ajonaikaset virheet. - Eclipsen PHP-tilan Problems-välilehti - näyttää syntaksivirheet
- Oikealla Toggle Breakpoint ja sitten Debug As | PHP Script
var_export-funktiota voi käyttää debuggauksessa seuraavasti:- Laita lomakkeen lähettämisen jälkeen väliaikaisesti
komento
var_export($_REQUEST); - Kopioi sen tuottamat tekstit.
- Laita breakpoint johonkin väliin PHP-sivun koodia.
- Aja sivu debug-perspektiivissä
- Valitse Variables-kohdasta
$_REQUESToikealla ja valitse Change value. Laita var_export-funktion tuottama PHP-koodi tekstilaatikkoon, niin saat oikeat lomakeparametrit käyttöösi.
- Laita lomakkeen lähettämisen jälkeen väliaikaisesti
komento
Lomakkeet ja tietosuoja
Henkilötietolain mukaan pääsääntöisesti kaikesta henkilötietojen automaattisesta käsittelystä tulee tehdä ilmoitus tietosuojavaltuutetulle. Esimerkiksi jos tehdään WWW-lomakkeita, joissa kysytään henkilöä koskevia arkaluonteisia tietoja, ja tallennetaan ne johonkin, niin tällöin tehtävä rekisteri-ilmoitus. Jos palvelua käytetään tietoverkossa, rekisteriseloste tulee liittää verkkopalvelun yhteyteen.
- Henkilötietolain mukainen ilmoitusvelvollisuus
- Mikä rekisteriseloste on
- Rekisteriseloste-lomake
- Esimerkki: Korppi-järjestelmän rekisteriseloste
SSH-avaimet
Autentikointi voidaan tehdä palvelimelle sijoitettavaan julkiseen avaimeen perustuen, jolloin esim. tiedostojen kopiointi helpottuu. Tässä ohjeistusta Mika Videnojan ohjeeseen perustuen:
- Oletetaan, että SSH Secure Shell 3.2.9 on asennettu.
- Luodaan SSH-avainpari kotikoneen komentorivillä (cmd)
ssh-keygen2.exe -b 1024 -t dsa -P
- Kopioidaan polussa Documents and Settings\%username%\Application Data\SSH\UserKeys oleva julkinen avain id_dsa_1024_a.pub palvelimen käyttäjän kotihakemistossa olevaan .ssh-hakemistoon, esim. SFTP:llä tai SCP:llä.
.ssh-hakemistoon kaikki oikeudet ainoastaan käyttäjälle.- Aja
.ssh-hakemistossa komentossh-keygen -f ~/.ssh/id_dsa_1024_a.pub -X >> ~/.ssh/authorized_keys
- Tiedostoon authorized_keys ainoastaan luku- ja kirjoitusoikeus käyttäjälle.
- Nyt ssh2 ja scp2 toimivat ilman salasanan kyselyjä. Graafisessa liittymässä pitää
valita autentikointimetodiksi Public Key. Hakemiston ja kaikki sen alihakemistot ja niissä olevat tiedostot voi siirtää seuraavalla komennolla:
scp2 -r hakemisto omatunnus@jalava.cc.jyu.fi:html/sovellukset/
PHP-lomake-esimerkki
Esimerkkikoodit kommenteilla:
Jatketaan esimerkkilomakkeen tekemistä.
- Lähetyksen tarkistaminen ennen oletusarvojen tulostamista
- Tulostetaanko lomake pelkkänä XHTML:nä vai tarkistellaanko jokaisessa kohdassa erikseen onko lähetetty?
- Jos erotellaan lähetetty ja ei-lähetetty tilanne, niin tällöin tulee kaksi erillistä lomaketta. Tällöin ei tarvitse montaa if-lausetta, mutta päivitettävyys kärsii.
- Jatkamme toistaiseksi if-linjalla, koska myöhemmin on helpompi tehdä dynaamisia lomakkeita.
- Ennen pitkää tavoite on päästä eroon toistuvasta if-lauseiden kirjoittamisesta. Tämä onnistuisi olioiden avulla, jotka kapseloivat virheenkäsittelymekanismit.
- Moniulotteinen virhetaulukko - useita virheitä yhdessä kohdassa
- Katenointioperaattori
.
- Katenointioperaattori
- Merkin vertailu merkkijonosta
$jono{$i}strlen
- Onko numero?
- Valintavaihtoehdon oletusarvon täyttäminen virhetilanteessa
- Useiden lomake-elementtien läpikäynti kerralla
- Keskiarvon laskeminen väitevaihtoehdoista
- Dynaamiset lomakkeet
- Eri päivien kilokalorit?
- Moniulotteinen taulukko suoraan lomakkeelta
- Minä päivänä tuli eniten energiaa?


Käyttäjien kommentit