PHP
PHP KOULUTUSTA VUONNA 2025!
-
PHP koulutus
-
WordPress PHP-devaajalle koulutus
-
MySQL koulutus
-
Apache HTTPd koulutus
-
Microsoft IIS koulutus
Kurssit saatavilla kautta Suomen. Tule ja varaa oma koulutustapahtumasi heti! Koulutuksen järjestää asiantuntijasi Koulutus- ja konsultointipalvelu KK Mediat.
PHP:n tietotyyppien muuntaminen ja tyypin tarkistus
Tyypin muuntaminen
PHP on dynaamisesti tyypitetty kieli, mikä tarkoittaa, että muuttujien tyypit määritellään automaattisesti niiden arvojen perusteella. PHP saattaa kuitenkin tehdä automaattisia tyyppimuutoksia, jotka voivat johtaa odottamattomiin tuloksiin, erityisesti vertailuissa ja laskelmissa. Tästä syystä muuttujan tyypin tarkistaminen ja pakottaminen toiseksi on tarpeen joissain tilanteissa.
Tyypin tarkistaminen
Ennen tyyppimuutosta on olennaista tietää mitä tietotyyppiä muuttuja on nykyisellään.
Tätä tarkistusta varten PHP-tarjoaa joukon tyyppitarkastus-funktioita, kuten is_int()
, is_string()
, ja is_object()
.
Jokainen näistä ottaa parametrina muuttujan, ja palauttaa true/false-arvon:
$iLuku = 10;
if (is_int($iLuku)) {
echo '$iLuku on kokonaisluku.';
}
Tietotyypin automaattinen muuntaminen (type juggling)
Alla oleva esimerkissä PHP muuntaa $a-muuttujan taulukoksi, kun siihen lisätään arvo hakasulkeita käyttäen. PHP-tulkki ei kuitenkaan ilmoita virhettä, vaikka muuttuja alun perin oli kokonaisluku. Tämä on esimerkki klassisesta "type juggling"-tilanteesta, jossa PHP päättää muuntaa muuttujan tietotyypin toiseksi operaation suorittamiseksi.
$iLuku = 1; // kokonaisluku
$iLuku[0] = "f"; // $iLuku muuntuu taulukoksi automaattisesti
Pakotettu tyyppimuunnos
Jos tiedämme, että muuttuja on merkkijono, mutta haluamme käsitellä sen kokonaislukuna, voimme pakottaa sen muunnettavaksi. Pakotettuja tyyppimuunnoksia tulisi käyttää kaikissa tilanteissa, joissa tieto tulee ulkopuolisesta lähteestä - esimerkiksi evästeestä, lomakkeesta tai kyselymerkkijonosta. Tätä kautta tyyppimuunnokset voivat estää haitallisten syötteiden pääsyn järjestelmään ja parantaa koodin tietoturvan tasoa.
PHP:ssä muuttujan tietotyypin konvertoiminen toiseksi voi tapahtua joko settype()
-funktion avulla tai kastaamalla.
Alla oleva esimerkki demonstroi settype()-funktion käyttöä tuoteid:n sisältävällä kyselymerkkijonolla:
$iTuoteID = $_POST['id'];
settype($iTuoteID, "integer");
if($iTuoteID < 1 ) {
echo "Virhe: tarkista tuotenumero.";
}
Jos kyselymerkkijono sisältäisi vaikka SQL Injection hyökkäyksessä käytettävän haitallisen merkkijonon, muuntaisi settype()-funktio sen arvon numeeriseksi luvuksi (todennäköiseksi nollaksi).
Toinen tapa pakottaa tyyppimuunnos PHP:ssä on tyyppikastaus. Tämä on tyypillistä muun muassa C- ja Java-ohjelmoinnissa. PHP:ssä tyyppikastaus tapahtuu lisäämällä haluttu tyyppi sulkeisiin muuttujan nimen eteen. Esimerkiksi:
$iTuoteID = (int) $_POST['id'];
if($iTuoteID < 1 ) {
echo "Virhe: tarkista tuotenumero.";
}
Mahdolliset kastaustyypit ovat:
- (int), (integer) -- kokonaisluvuksi
- (bool), (boolean)-- booleaniksi
- (float), (double), (real)--liukuluvuksi
- (string)-- merkkijonoksi
- (array) -- taulukoksi
- (object)-- objektiksi