Voinko lisätä PHP:sivulleni kuvia jotka ovat esim /tmp/my_images hakemistossa?
symboolinen linkki toimisi, mutta en haluaisi käyttää sitä ollenkaan.
kokeilin myös <img src="../../../../tmp/my_images, mutta se ei onnistunut.
Symbolinen linkki kansioon on yksinkertainen ratkaisu; asiaan vähemmän perehtyneenä en tosin tiedä onko jossakin palvelinsoftassa asetusta, jonka kanssa ohjelma pyrkii välttämään symbolisten linkkien seuraamista.
img-tagille et voi antaa attribuutiksi mitään osoitetta, johon et pääse esimerkiksi selaimesi osoiteriviltä - img vain kehottaa selainta hakemaan kuvaa suhteellisesta tai absoluuttisesta osoitteesta ja palvelimen tulisi estää mm. yritykset laskeutua www-rootia (esimerkiksi "/path/to/www") alemmaksi. Jos symboliset linkit kansioon tai tiedostoihin eivät käy tai toimi, voit toki aina tehdä esimerkiksi PHP-tiedoston, joka tarjoilee kuvat - tällöin selaimien kyky tallentaa kuvia välimuistiin saattaa heikentyä, ja kaistankulutus näin lisääntyä.
Ainakin Apachessa on asetus siitä, saako symbolisia linkkejä seurata asetetun hakemiston ulkopuolelle. eg antoikin jo ratkaisuvaihtoehdot. Yksi dynaaminen, PHP:tä käyttävä ratkaisu on $_SERVER["PATH_INFO"]-tiedon käyttö, joka mahdollistaa skriptin käyttämisen virtuaalisena hakemistona. Itse tein tällä menetelmällä palvelimelleni tiedostolistauksen, jossa www/listaus.php/ näyttää juurihakemiston ja esimerkiksi www/listaus.php/boot/grub/splash.xpm antaa ladata kyseisen tiedoston (/boot/grub/splash.xpm). (Ominaisuus on tietenkin salasanasuojattu.) Mainitsemani muuttuja sisältää osoitteen loppuosan listaus.php:stä eteen päin eli tässä tapauksessa tiedoston absoluuttisen polun. Hyvä puoli on, että skriptissä voi samalla tarkistaa vaikkapa käyttäjän kirjautumisen tai muuta vastaavaa.
Yleisesti ottaen en pitäisi suotavana antaa käyttäjän ladata tiedostoja vapaasti /tmp -hakemistosta. Siellä kun on usein tiedostoja, jotka ei varsinaisesti ole tarkoitettu kaikkien sivujen selaajien nähtäviksi. Toki jos hakemistolistauksen näyttö on pois päältä, niin sitten selaajan täytyisi tietää tiedoston nimi, mutta se nyt saattaa olla lähinnä hidaste.
Kiitos.
$_SERVER["PATH_INFO"] ja hakemistonlistauksen käyttö ratkaisee ongelman.
Aihe on jo aika vanha, joten et voi enää vastata siihen.