Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Textarean lisäyskoodi?

Sivun loppuun

mattisimula [15.01.2007 11:26:10]

#

Onko lyhyttä tapaa lisätä textareakenttään (tekstikenttään) html-koodia, eli kuten monissa näkemissäni keskustelufoorumeilla saa lisättyä hymiöitä painamalla nappia. Tehtävänäni olisi pystyä lisäämään ainakin rivinvaihtokoodi tekstikenttään, koska teksti lähetetään tietokantaan ja tulostetaan sivuilleni sellaisenaan, olisi hyvä, että sivujeni käyttäjät saisivat asetella tekstiään. Toivoisin, että javascriptin käyttö olisi vähäistä sivuillani, jos muuta ratkaisua ei löydy, JS:kin käy.

T.M. [15.01.2007 11:28:46]

#

Siis haluat ettei käyttäjän viesti mene "sekaisin" koska he eivät osaa laittaa <br> koodia rivinvaihtojensa tilalle? Ratkaisu: Korvaa rivinvaihto <br>:llä käyttämällä PHP:tä:

$viesti = str_replace("\r\n", "<br>", $viesti);

Agony [15.01.2007 11:53:30]

#

Tietokantaan muutenkin kannattaisi ottaa mahdollisimman vähän muotoiltua tekstiä, sillä jos jossain vaiheessa viestejä pitäisi näyttää vaikka .exe -ohjelmassa tai XHTML-standardi pistetään kertaheitolla uusiksi, ei tule kuin suru puseroon.

Ohessa hieman listaa mitä kannattaa tehdä:

1. Esikatselussa ajaa kaikki käyttäjältä tulevat syötteet nl2br(htmlentities(stripslashes($_POST['kenttä']))) läpi, ei saa ainakaan kukaan omaa kivaa kirjoittamalla textareaan koodia "</textarea> <h1>Sivuston ylläpitäjä ei vaihda sukkiaan!</h1>"

2. Tietokantaan ajaessa varmistaa data mysql_real_escape_string(stripslashes($_POST['kenttä'])) (oletuksena että kanta on MySQL, myös PostgreSQL ja muille on olemassa vastaava *_real_escape_string) että voidaan estää SQL-injektio

3. Datan esittelyvaiheessa ajaa esiteltävä teksti nl2br($Kyselydata['Kenttä']) läpi jolloin rivinvaihdot muuttuu _esittelyvaiheessa_ <br /> -tageiksi

tsuriga [15.01.2007 12:27:47]

#

Agony kirjoitti:

nl2br($Kyselydata['Kenttä']) .. jolloin rivinvaihdot muuttuu _esittelyvaiheessa_
-tageiksi

nl2br ei poista rivinvaihtoja, vaan lisää rivinvaihtojen taakse <br />-tagin.

T.M. [15.01.2007 20:09:08]

#

Jepjep, kannattaa välttää tuota nl2br funktiota, tulee turhia yllätyksiä vain.

tsuriga [15.01.2007 20:12:44]

#

Kyllä mulle kelpaa rivinvaihdotkin, selkeämpi lähdekoodi.

Agony [16.01.2007 09:50:06]

#

nl2br on huomattavasti pätevämpi kuin \r\n korvaus:
1. Linux-rivinvaihdot (\n) saa <br />
2. Mac-rivinvaihdot (\r) saa <br />
3. Windows-rivinvaihdot (\r\n) saa <br />
4. Windows-rivinvaihdot ei saa kahta <br />

Toki voi viritellä oman preg_replace patternin joka tekee saman asian, mutta skripti on aina hitaampi kuin alustalle käännetty funktio.

Olga [16.01.2007 11:49:50]

#

Funktio str_replace esimerkiksi ottaa syötteekseen myös taulukon, jolloin muuttaminen onnistuu kätevästi ja on nopeampi kuin säännölliset lausekkeet. Mutta toki jos haluaa nuo rivinvaihdot br-tagien oheen, niin sitten kannattaa käyttää nl2br-funktiota.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta