Mietin ja pähkäilin merkkijonon turvallista
tallentamista. Päädyin omalta kohdaltani
seuraavanlaiseen muokkaamiseen:
<?php function str2safe($str) { return trim(htmlentities(addslashes(strip_tags($str)))); } ?>
Kyseisen sekasotkun voi purkaa seuraavalla:
<?php function safe2screen($str) { return html_entity_decode(stripslashes($str)); } ?>
Eli ensimmäisen funktion läpi vedetty merkkijono
voidaan tallentaa ja jo olemassa oleva merkkijono
vedetään toisen funtion läpi ennen ruudulle
tulostamista.
Mitä mieltä olette? Mitä en ole ottanut
huomioon? Mitä voisi parantaa?
edit: Selvennystä asiaan ja korjaus koodiin
reca kirjoitti:
Mietin ja pähkäilin merkkijonon turvallista
tallentamista.
Tallentamista mihin?
Lähtökohtana tallennus tiedostoon, mutta ei kai
tuosta ole haittaa tietokantaankaan tallennettaessa.
reca kirjoitti:
Lähtökohtana tallennus tiedostoon
Jos tallennat useamman asian samaan tiedostoon, tyyliin "nimi|ikä|paino", jolloin pystyviivan esiintyminen jossain tiedoista sotkisi tiedoston, pitää datassa esiintyvät pystyviivat korvata jollain muulla, mutta esimerkiksi HTML:ää tai hipsuja ei tarvitse eskapoida.
reca kirjoitti:
tietokantaankaan tallennettaessa.
Kantaan tallentaessa taas tarvitsee siivota (vain) SQL-lauseiden erikoismerkit, mihin on valmis funktio
Tulostaessa dataa näytölle (HTML-dokumenttiin), tarvitsee se ajaa htmlspecialchars() ja mahdollisesti (palvelimen asetuksista riippuen) stripslashes() -funktioiden läpi.
Tallennan tiedostoihin yleensä käyttäen php-tiedostoja,
joissa tieto on tallennettu muuttujiin:
<?php $nimi='nimi'; ?>
Edellämainitussa tilanteessa slasheja voi tarvita
Blazen esimerkkiä enemmän.
Tietokannan valmiista funktiosta en ollut tietoinen :-).
Aihe on jo aika vanha, joten et voi enää vastata siihen.