Bè .. intanto grazie per le risposte ..
sei l'unico che risponde !! :-)
certo che sarei curioso di saper cosa c'era in quest'articolo .. :-(
http://forum.html.it/forum/showthrea...t=htpasswd+php
Bè .. intanto grazie per le risposte ..
sei l'unico che risponde !! :-)
certo che sarei curioso di saper cosa c'era in quest'articolo .. :-(
http://forum.html.it/forum/showthrea...t=htpasswd+php
Come ti ho scritto, devi mettere la readfile su un file a parte. poi richiami tale file dal attributo src del tag img.
es:
foto.php
Ora che hai lo script, lo devi richiamare nel tag img nelle pagine che ti interessanoCodice PHP:// Eventuali controlli su permesso di visualizzazione ed esistenza del file
$img = "percorso/".$_GET['nome']; // percorso deve essere assoluto, per evitare problemi
// Devi cambiare il MIME a secondo del tipo di foto (jpg, png, gif etc)
header('Content-Type: image/jpg');
header('Content-Length: ' . filesize($img));
readfile($img);
echo "<img src='foto.php?nome=$nome_foto' />
Questo, sostituisce il collegamento diretto con la foto ( src=\"percorso/" . $nome_foto . "?" . microtime(true))
Ultima modifica di boots; 06-11-2013 a 10:14
allora mi sa che non ci siamo ..
le immagini sono 'dinamiche' .. io non so a priori il nome del file (immagine) da far vedere .. e quindi da inserire nel file 'foto.php' :-(
a meno che non scriva in modo dinamico il file 'foto.php' scrivendo il nome corretto dell'immagine che mi interessa .. ma mi sembrerebbe impegnativo :-)
Ultima modifica di JANUS70; 07-11-2013 a 01:25
ho riguardato un attimo la cosa ..
ma sembra che usi un '$_GET' .. ma poi usi il nome in modo statico ..
e dove si scrive la '<img ..' usi il '?' per passare un dato ($nome_foto)
c'è qualcosa che non mi torna ..
Tutto va adattato alle tue esigenze...
Facciamo finta che tu voglia visualizzare le immagini di una cartella, che hai protetto con htaccess. Puoi procedere così:
1. Script indice delle immagini. (Quello che prima faceva apache con htpasswd)
2. Gli script che visualizzano le foto (fanno il download) sono quelli che ti ho postato, che vengono richiamati da questa paginaCodice PHP:<?php
if(not_authorized()){
// Non sono autorizzato a vedere il contenuto della cartella!!
echo "Non sei autorizzato a consultare questa cartella!";
exit();
}
$dir = '/var/www/miosito/directory_protetta/';
// Ciclo su tutti i file della directory protetta
foreach (glob($dir."*.*") as $file) {
$fileenc = urlencode(basename($file));
// Questa è una funzione che devi fare...ma credo che online ce ne siano quante ne vuoi
if(è_un_immagine($file)){
echo '<img src="foto.php?name='.$fileenc.'" /><br />';
}else{
echo '<a href="download.php?name='.$fileenc.'" />'.basename($file).'</a>';
}
// Ho usato urlencode,per evitare problemi con i nomi dei file.
// in foto.php/download.php dovrai usare urldecode
// $file = urldecode($_GET['name']);
}
?>
In breve: Prima gli utenti li rimandavi su www.miosito.it/cartella_privata, dove gli veniva chiesta la password. Adesso li mandi su questo script, che ti visualizza il contenuto della cartella
Ultima modifica di boots; 07-11-2013 a 10:28
facciamo una cosa alla volta senò mi perdo .. :-)
torniamo all'esempio della 'GET'
esempio concreto:
ho una pagina html dove nella cella di una tabella devo 'visualizzare' una foto.
(nelle altre celle ovviamente c'è dell'altro)
Il nome della foto viene scelto attraverso php (che cerca il nome legato ad un'anagrafe dentro alla cartella di tutte le immagini)
credo che fin qua ci siamo e sia tutto chiaro .. :-)
tornando all'esempio che mi hai mostrato dovrei avere 2 pagine:
1) pagina html (in realtà php) .. 'anagrafe.php' che deve visualizzare OLTRE A TUTTO IL RESTO anche una foto:
(la variabile '$nome_foto' contiene il nome fisico dell' immagine prescelta - es. fiore.jpg)
2) pagina php .. 'documento_view.php' che dovrebbe leggere l'immagine in questione, bypassando .htaccess:Codice PHP:echo "<img src='documento_view.php?nome=$nome_foto' /> ";
Se mi dici cosa c'è di sbagliato (concettualmente o tecnicamente) perchè non funziona niente ! :-)Codice PHP:$img = "percorso/".$_GET[$nome_foto];
header('Content-Type: image/jpg');
header('Content-Length: ' . filesize($img));
readfile($img);
Grazie mille
Ultima modifica di JANUS70; 08-11-2013 a 02:41
Concettualmente è giusto...tecnicamente meno
Se scrivi
echo "<img src='documento_view.php?nome=$nome_foto' /> ";
Poi, in documente_view, il nome foto si trova nell' array $_GET['nome']
In questo modo dovrebbe funzionare tutto. In caso prova a chiamare da browser direttamente
www.miosito.it/path_to/documento_view.php?nome=fiore.jpg (o una foto esistente)
Tieni abilitati gli errori/warning e vedi se viene mostrata l'immagine oppure ottieni degli errori.
Nel caso non visualizzi nulla commenta gli header() e riprova per visualizzare gli errori (Se php scrive in output gli errori/warning, con gli header() il testo viene interpretato come immagine, che chiaramente non è valida)
Infine ricordati che il Content-Type che passi nell'header cambia in base al tipo di immagine (png, gif, jpg)
Ultima modifica di boots; 08-11-2013 a 11:22
boots ..
ciao .. hai visto che ti ho mandato un mess. Privato ? :-)
Grazie
devo fare delle prove .. perchè al primo colpo non mi funcsia .. :-(