Eli tälläinen on koodi
<?php include("session.php"); include("fun.php"); yhdista(); $id = $_GET['id']; $sql = "Select * from kommenttit where tiedosto = '$id' order by tunnus"; $mysql = mysql_query($sql); $rivi2 = mysql_fetch_assoc($mysql); ?> <form method="POST" action="kirjoita.php?id=<?php echo $_GET['id']?>"> <input type="text" name="kommentti" value="Kommentti"><br> <input type="submit" value="lähetä!"> </form> <?php while ($rivi = mysql_fetch_assoc($mysql)) { echo "<br>Lähettäjä:",$rivi['tunnus'],"<br>"; echo "Kommentti:",$rivi['kommentti'],"<br><hr><br>"; } ?> <link rel="stylesheet" type="text/css" href="style.css">
Sivustolla tuo on iframessa. Kertokaa mikä on vika
Tuolla sun antamalla id:llä ei löydy kun yks tietue kenties?
TeNDoLLA kirjoitti:
Tuolla sun antamalla id:llä ei löydy kun yks tietue kenties?
Kyllä löytyy... siinä se ihme onkin :P
Ensimmäisen rivin otat $rivi2-muuttujaan, muttet käytä sitä mihinkään. Toisesta eteenpäin tulostat while-silmukassa. Se on tarkoituskin?
Lisäksi sijoitat käyttäjän syötteen kyselyyn sellaisenaan, mikä on iso tietoturva-aukko.
Mikä tuon rivin tarkoitus on?
$rivi2 = mysql_fetch_assoc($mysql);
Tuon mysql_fetch_assoc()-funktion kutsuminen siirtää pointterin seuraavaan riviin, eli ymmärtäisin, jos kysymyksesi olisi: miksi ensimmäinen tieto ei näy?
Tulosta tuo $sql-muuttujan sisältö sivulle ja liitä se phpMyAdminiin tai vastaavaan ja katso mitä saat sieltä tulokseksi.
Edit: Chimankin ehti toteamaan saman tässä välissä ja tarkennuksena tuohon tietoturvaaukkoon, katso miltä kyselysi näyttää, kun kirjoitat osoiteriville
?id=1'; DROP TABLE kommentit;
:)
Jep While muuttujalla on tarkoitus. Tuo $rivi2 oli tarkoitus tarkistaa oliko olemassa yhtään kommenttia. Poistin tuon ja hyvin pelaa
Voit tarkistaa löytyikö yhtään kommenttia mysql_num_rows()-funktiolla.
Aihe on jo aika vanha, joten et voi enää vastata siihen.