htaccess e login

htaccess e login

Ciao a tutti, ho un problema con htaccess.

Ho alcune pagine del mio sito che sono riservate in cui gli utenti possono entrare con la propria username e password. Il tutto è fatto in php e mysql.

Quindi una volta che l'utente digita la password entra nella propria pagina e qui trova tutti i suoi dati estrapolati da mysql.

Un campo prevede l'invio ad un file pdf contenuto in una cartella. Il cliente clicca su visualizza e ilfile si apre.

Conoscendo però il link diretto si può accedere comunque al pdf e aprirlo. E' proprio ciò che ho cercato di evitare con htaccess.

Il problema è che mi trovo di fronte ad una doppia autenticazione, l'una del mio script in php per l'accesso alla pagina, l'altro di htaccess per l'accesso alla cartella in cui è contenuto il file.

La cosa risulat un po' "scomoda".

Mi piacerebbe fare in modo che php gestica il tutto anche tramite htaccess e volavo sapere da voi se è possibile... E soprattutto come?

Sicuro di un vostro aiuto vi saluto tutti e vi auguro un buon Week..

Danilo

inviato 9 anni fa
danilob
X 0 X

Se hai già implementato un sistema di autenticazione con PHP/MySQL ti conviene lasciar perdere il file htaccess e procedere diversamente.

Metti i file PDF in una cartella esterna alla document root del tuo server web, in modo che siano inaccessibili dal browser dell'utente.

Crea poi uno script PHP in grado di leggere un file e di inviarlo all'utente, basato su una semplice funzione: readfile(). Presta attenzione alle intestazioni (header) da inviare affinché il browser sia informato del tipo di file che gli stai inviando. Direttamente dalla documentazione ufficiale:

<?php
// We'll be outputting a PDF
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('original.pdf');
?>

Quando un utente vuole scaricare il file PDF clicca su un link che punta allo script PHP suddetto, il quale invierà all'utente il file desiderato.

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Grazie Gianni ma dove li metto  i file PDF in una cartella esterna alla document root....

risposto 9 anni fa
danilob
X 0 X

inoltre se unutente riesce a sapere il percorso dell'url del file non c'è pericolo che riesca a scaricarlo?

risposto 9 anni fa
danilob
X 0 X

Se il file è esterno alla document root non è accessibile ai browser. La document root è la cartella principale del sito, ma normalmente tutti i servizi di hosting danno la possibilità di salvare dei file al di fuori di questa cartella.

Quando metti gli script php sul server, in che cartella remota li salvi?

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

nella cartella del mio dominio

risposto 9 anni fa
danilob
X 0 X

GRAZIE Gianni ci sono riuscito con htaccess e la funzion e che mi hai detto readfile().

Si può anche fare con le immagini?

risposto 9 anni fa
danilob
X 0 X

si, le immegini sono dei file come gli altri, l'importante è inviare il corretto "Content-type"

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

in questo casoi è image/gif?

risposto 9 anni fa
danilob
X 0 X
in questo casoi è image/gif?

solo se si tratta di una gif, se invece è una jpeg o una png cambia...

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

ok. Non riesco a far passare una variabile esemoio $var che prende i dati da un record mysql. Mi puoi aiutare?

risposto 9 anni fa
danilob
X 0 X
ok. Non riesco a far passare una variabile esemoio $var che prende i dati da un record mysql. Mi puoi aiutare?

e che centra con questa discussione?!?  :police:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

In questo senso:

/ We'll be outputting a PDF

header('Content-type: application/pdf');

// It will be called downloaded.pdf

//header("Content-Disposition: attachment; filename=$Img");

 header('Content-Disposition: attachment; filename=$Img');

readfile ($Img);

risposto 9 anni fa
danilob
X 0 X

L'approccio è corretto anche se non è chiaro da dove venga fuori $Img (cosa che comunque esula dalla discussione).

C'è comunque un errore: $Img deve essere solo il nome del file, senza il percorso, quindi probabilmente non può essere usato nella funzione readfile che invece deve puntare esattamente al file in questione.

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Ok, ti spiego meglio.

Nel mio sito una volta inserite user e pass accedi alla tua area privata.

Qui visualizzi i tuoi dati, quali nome, cognome, email e quant'altro.

In questa pagina io definisco anche altre variabili come  $Img che contiene l'indirizzo della gif preso da mysql.

Non tutti gli utenti hanno però la necessità di scaricare la tabella gif dal tadabase ma solo quelli che in precedenza hanno aderito a questo servizio.

Faccio quindi un controllo con if e se

 if $Img=""

{

echo "";

}else{

{

header('Content-type: application/gif');

 header('Content-Disposition: attachment; filename=$Img');

readfile ($Img);

}

Come puoi vedere non è vero che esaula dalla discussione......

risposto 9 anni fa
danilob
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda