<?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.