<?php function drop_ext($filu){ return substr($filu, 0, strrpos($filu, ".")); } $kayttaja = $_COOKIE['user']; $lista = glob("*.mbr"); sort($lista); foreach($lista as $tiedosto){ $osoite = 'http://localhost/web/muokkaa.php?user=' . $kayttaja . '&sivu=' . drop_ext($tiedosto); $nimi = drop_ext($tiedosto); echo '<a href="' . $osoite . '">' . $nimi . '</a><br>'; } ?>
Edellä olevan kaltaista kyhäelmää käytän, mutta siinä on ongelmana se, että se listaa vain samassa hakemistossa olevat tiedostot? Miten voin listata vaikkapa members/*käyttäjä*/ (*käyttäjä* tulee cookiesta) hakemiston mbr-tiedostot niin, että kuitenkin tuo muuttuja $osoite pysyy muodossa
http://localhost/web/muokkaa.php?user=sejase&sivu=sejase
Voit lisätä $lista-muuttujaan kyseisen hakemiston tiedostot (jotka haet uudella glob-kutsulla):
<?php $lista = glob("*.mbr"); //Escapatetaan, ettei käyttäjänimi "../../../" näytä eri hakemiston tietoja... $käyttäjä = addslashes($käyttäjä); $lista = array_merge($lista, glob("./members/{$käyttäjä}/*.mbr")); sort($lista); //...jatkuu normaalisti ?>
En ole testannut, mutta eiköhän vähintään idea tule ilmi. Muista tosiaan escapettaa käyttäjän syöte (eli tässätapauksessa käyttäjänimi), jottei sovellukseen tule tietoturvaongelmia.
Pitikin taas väsyneenä koodailla... Tuohon hommaan riitti jo pelkkä str_replace komento :D
Aihe on jo aika vanha, joten et voi enää vastata siihen.