2010-02-26 23 views
10

Ho uno script che consente solo agli utenti autorizzati di caricare file in una determinata cartella.Come impedire il download pubblico di file tramite php?

Tuttavia, non so come impedire alle persone di scaricare liberamente senza effettuare il login.

Ho bisogno della soluzione in php.

Ho cercato su Google ma non è ancora in linea.

Attualmente nella mia radice documento ho una cartella chiamata admin e una sottocartella chiamata upload all'interno dell'amministratore. Quindi è possibile caricare solo il ruolo di amministratore. Sia l'editor che l'amministratore possono scaricare. Cosa dovrei fare in questo caso?

Si prega di avvisare.

risposta

13

Posizionare i file fuori dalla directory Webroot pubblica o configurare il server in modo che non serva i file. Finché il tuo server servirà felicemente tutto con un URL valido, non c'è niente che tu possa fare con PHP per impedirlo.


Se i file si trovano nella cartella /public_html/, portarli fuori della cartella e metterli in es /secret_files/, quindi la struttura delle directory simile a questa:

public_html/ 
    index.html 
    admin/ 
     admin_index.php 
secret_files/ 
    my_secret_file.txt 

Il server web è configurato solo per servire i file nella directory /public_html/, in modo che nessuno avrà accesso alle directory fuori (termine tecnico sopra) IT.

Per consentire ancora a qualcuno di scaricare quei file, fare come suggerisce il cletus e utilizzare readfile per "servire manualmente" i file tramite uno script PHP. PHP avrà comunque accesso a queste altre parti del file system, quindi è possibile utilizzarlo come gatekeeper.

+0

è il webroot pubblico public_html? wat su httpdocs? –

+0

@keisimone Visualizza la risposta aggiornata. – deceze

+0

grazie. questo è molto più chiaro. voi ragazzi siete fantastici –

5

Rispondere alla domanda su come proteggere con PHP con password: This dovrebbe risolvere il tuo problema.

+0

e che dire di qualcuno trova la password? – RageZ

+4

Se trovano la password, molto probabilmente hanno accesso al tuo FTP in modo da essere avvitato comunque. – twodayslate

9

Non memorizzare i file in una directory sotto la radice del documento.

Invece spostarli da qualche altra parte e quindi uno script PHP può determinare a livello di programmazione se qualcuno può scaricarli e quindi utilizzare readfile() o qualcosa di simile per inviarli in streaming all'utente.

È anche possibile configurare il server Web in modo che non serva i file da questa directory, ma in tal caso è necessario che PHP li serva comunque. È più pulito semplicemente non metterli sotto la radice del documento.

+0

hi cletus, non sono forte nella programmazione quindi ho bisogno di chiederti altre specifiche 1) dov'è altrove? attualmente nella mia radice del documento ho una cartella chiamata admin e una sottocartella chiamata uploads all'interno dell'amministratore. quindi è possibile caricare solo il ruolo di amministratore. sia l'editor che l'amministratore possono scaricare. cosa dovrei fare in questo caso? –

+1

@keisimone (1) Memorizzali sopra la radice del documento, che * potrebbe * essere qualcosa come htdocs o public_html. – alex

+0

@alex si tutti i miei file sono già in public_html :) quindi public_html> admin> upload –

Problemi correlati