Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Lataa tiedosto koodilla

Sivun loppuun

Jarzka [01.09.2011 05:45:11]

#

Terve

Kyselisin vain, että jokin nettisivuston tiedosto tai kansio suojataan niin, että sen voi ladata vain kun käyttäjä on kirjautuneena sisään tai vaihtoehtoisesti niin, että latauslinkin mukana pitäisi olla myös varmistuskoodi.

Hoituuko tuo ihan php:llä vai pitääkö sorkkia jotain muutakin?

The Alchemist [01.09.2011 07:41:18]

#

Laitat tiedostot jonnekin salaiseen hakemistoon ja teet skriptin - esim. download.php - joka lukee tiedoston ja lähettää sen käyttäjälle. Tätä varten on olemassa funktio readfile().

Jarzka [04.09.2011 01:01:39]

#

Muuten joo, mutta jos tämä linkki sitten lähtee leviämään, niin se antaa lataukset sitten kaikille. Tarkoitus olisi, että vain sivustolle rekisteröityneet käyttäjät saavat ladata tiedostoja.

Metabolix [04.09.2011 01:09:50]

#

Sitten tietenkin kirjoitat download.php:n alkuun if-lauseen, joka tarkistaa, että käyttäjä on kirjautuneena.

Jarzka [04.09.2011 16:09:46]

#

Entä jos sen tiedoston alkuperäinen osoite lähtee leviämään? Käsittääkseni on kuitenkin mahdollista selvittää, mistä se download.php sen tiedoston oikeasti lataa?

Esimerkiksi joillakin nettisivuilla kun yritän avata suoraan jotain tiedostoa (vaikkapa peli.exe), ja jos en ole kirjautuneena, sivusto herjaa siitä.

timodemus [04.09.2011 16:19:23]

#

Laita ladattavien tiedostojen kansioon .htaccess salasanasuojaus.
Silloin download.php pääsee lukemaan ladattavan tiedoston, mutta käyttäjä ei, jos ei tiedä .htaccess -salasanaa.
EDIT: Tämä siis toimii vain Apache -palvelimessa.

Tämä tuli ensimmäisenä mieleen, saattaa tähän olla joku parempikin keino.

Antti Laaksonen [04.09.2011 16:23:30]

#

Funktio readfile tulostaa halutun tiedoston sisällön sivulle. Tiedoston alkuperäistä nimeä tai sijaintia ei ole mahdollista päätellä.

Esimerkiksi jos tiedoston salainen.txt sisältönä on teksti ABC, seuraavat kaksi koodia tuottavat täysin saman tuloksen:

<?php
readfile("salainen.txt");
?>
<?php
echo "ABC";
?>

Käyttäjä ei siis voi tietää lopputuloksesta edes, onko sivun sisältö haettu jostain tiedostosta vai onko se tulostettu suoraan PHP:llä.

Jarzka [04.09.2011 17:33:59]

#

Kiitoksia neuvoista :)

Mietin vielä, että jos salainen tiedosto onkin jokin muu kuin tekstitiedosto (vaikka nyt peli.exe), niin miten tuo readfile osaa sitten sen lähettää käyttäjälle?

EDIT: No joo, taisinkin löytää vastauksen itse:
https://www.php.net/manual/en/function.readfile.php -> Forcing to download


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta