Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Talon numero ei näy tekstikentässä

novari [04.12.2016 11:47:10]

#

Minulla on tiedosto jossa on käyttäjän yhteystiedot, jota voi editoida mielin määrin. Ohjelma toimii muutoin ihan hyvin, mutta osoitteen kanssa on ongelmia. Editoitaessa pudottaa kadun nimestä pois talon numeron ja/tai asunnon numeron. Mikä tekee siitä minulle ylivoimaisen ymmärtää on että kun tulostan echolla $tiedot[2] siellä tulostuu kaikki ihan hyvin, mutta kun yritän saada tiedon muuttujaan niin eipäs tieto välitykkään numeroiden osalta tai välittyy jos ei laita välilyöntiä osoitteeseen. Mikähän tuossa on ongelmana?
Olen karsinut koodista kaiken muun pois paitsi sen missä virhe tulee.

<?php
$nimi=$_GET["nimi"];

if($nimi){
	$tiedot = file("$nimi/tiedot.txt"); //luetaan viestit

//$tiedot=file_get_contents("$nimi/tiedot.txt");
//$tiedot = explode("\n", $tiedot, 10); olen yrittänyt myös tällai, mutta sama homma

	echo $tiedot[2];// tässä on numerot mukana
	$osoite = $tiedot[2];//tähän taas ei tule numeroita ainoastaan kadun tai tien nimi
echo"
	<form action='tieto.php' method='post'>
		<input type='text' name='osoite' size='30' value=$tiedot[2]>Osoite //tähän ei tule numeroita
	</form>
";
}
?>

Metabolix [04.12.2016 11:52:57]

#

Sinulta puuttuu tekstikentän value-attribuutin yhteydestä lainausmerkit sekä tiedon oikea käsittely (kuten htmlspecialchars, turhien rivinvaihtojen poisto jne.). Nämä pitää aina muistaa sekä oikean toiminnan että vaarojen välttämisen vuoksi.

Debuggauksessa auttaa, jos opettelet katsomaan myös selaimen kautta sivun lähdekoodia: siellähän numerot näkyvät, mutta selaimessa elementin tarkastelu (inspect) varmasti näyttää, että ilman lainausmerkkejä numerot eivät tule osaksi tekstikentän arvoa.

Virheen vakavammat haitat näet, jos syötät seuraavanlaisen osoitteen: Testikatu><script>alert('HACKED');</script>. Kannattaa ihan oikeasti kokeilla tätä, jotta ymmärrys nettiohjelmoinnista paranee.

novari [04.12.2016 12:53:03]

#

Kiitos! Nyt toimii, joskus sitä ei näe vaikka kuinka tuijottaa.

The Alchemist [08.12.2016 08:00:03]

#

Näkemistä helpottaisi se, että tulostuksen tekisi siististi.

<form action="foobar.php" method="post">
  <input type="text" name="foo" value="<?= $foo ?>"/>
</form>

Vastaus

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

Tietoa sivustosta