Newsgroup: it.comp.www.php
Titolo: AIUTO!

CIAO COLLEGHI!
ascoltate bene:
Una ditta mi ha chiesto di creare in php un database per la gestione delle
password, cioe!!
Loro vogliono inserire sul loro sito un area riservata che contiene dei pdf
scaricabili on line da parte dei loro rivenditori.
Solo che questi pdf nn possono essere scaricati da chiunque ma soltanto dai
quei rivenditori che hanno fatto richiesta!
Ogni rivenditore fa la richiesta, e se la ditta da il permesso, il
rivenditore avrą una password per accedere a questa area riservata. La ditta
deve decidere se dare il permesso e se possibile anche decidere la password
da consegnare a chi l'ha richiesta!
Inoltre questi pdf devono essere inseriti dalla ditta in particolari
cartelle che a seconda del rivenditore vengono visualizzate:
RIVENDITORE A CARTELLA COMUNE, CARTELLA A
RIVENDITORE B CARTELLA COMUNE, CARTELLA B
RIVENDITORE C CARTELLA COMUNE, CARTELLA C
Il rivenditore A puo solo vedere la sua cartella, cosi via gli altri.
Esisterą una cartella comune visibile da tutti.
Questo perchč alcuni pdf possono essere scaricati da tutti, altri invece no,
ma sono per determinati rivenditori.
Chi puo aiutarmi?


Scusa ma non si capisce che tipo di aiuto ti serva...
Ti serve qualcuno che te lo faccia?!?!
A.

quei rivenditori che hanno fatto richiesta!
Il sistema piu' semplice e' avere una cartella FUORI dal normale web tree,
e li' stivare i vari PDF con un nome univoco. Poi con tre tabelle
files
	id_pdf		(seriale)
	nome_pdf	(es. "Listino Scontatissimo.pdf")
	nome_breve	(es. "listscont.pdf")
	nome_su_disco	(es. "Prezzi tripli per le carogne.pdf") :-)
utenti
	id_utente	(seriale)
	(dati utente)
permessi
	id_pdf	id_utente
sistemi tutto. Ti servira' una pagina con l'accesso all'area riservata in
cui chiedi utente e password e gli fai vedere l'elenco dei PDF (mettendo,
ovviamente, i nomi "pubblici").
Per scaricare il PDF gli puoi dare un link fasullo:
http://www.sito.it/pdf.php/rossi/626eb6ccf87a77dbeb57abdc40226c1f/listscont.pdf
dove '626eb6ccf87a77dbeb57abdc40226c1f' e' un MD5, ottenuto dall'orario e
dai dati utente (utente, password_utente).
Se
	SELECT count(*) FROM utenti WHERE
		MD5(CONCATENATE('$orario', utente, password)) = '$codice'
ti ritorna 1, per l'orario corrente, vai di Header e con passthru.
Nel caso tu non abbia MD5 nel DBMS, puoi estrarre utente e password (ecco
dove viene utile quel /rossi/) e calcolare il dato in PHP.
In questo caso, sono le 11:33, quindi tu provi con
	orario = 2003023010	...e ti ritorna 0
	orario = 2003023011	...e ti ritorna 1
e allora va bene. In questo modo ogni codice vale al massimo due ore.
Per generare un codice valido occorre sapere (a parte l'algoritmo) utente
e password, oppure riuscire a invertire il MD5. Ma c'e' anche SHA160, nel
caso <grin>
Leonardo "suggerimenti gratis, il codice si paga" :-)))
-- 
Time's angles, mages tell, conceal a place
incredible, beyond the mundane mind;
night-shrouded and between the seas of space
dread creatures drift in the ageless winds.

 e li' stivare i vari PDF con un nome univoco. Poi con tre tabelle
In questo caso non sarebbe una buona idea mettere i pdf direttamente nel db?
Dovrebbe essere più snello il sistema di protezione... per farglieli buttare
fuori al volo servono poche righe.. i controlli sono più semplici che star
lì a controllare che il file con quel nome ci sia sempre e sia al posto
giusto e sia sempre quello etc etc..  a livello di prestazioni non è male..
e se sono tanti missà che è anche meglio.. per il backup basta backuppare il
db...
Poi vabbè.. magari ci sono mille motivi contrari.. è solo un'idea...
E' una soluzione che io a volte adotto e mi trovo bene però si tratta tutto
sommato di progettini.. quindi...

In questo caso non sarebbe una buona idea mettere i pdf direttamente nel db?
Se il DB supporta i binary large objects, se non interessa avere una
cartella con tutti i dati (es. montata read-only perche' su CD :-) )
eccetera.
Piu' che altro, in questo modo uno puo' facilmente vedere i dati nel
loro formato originario e modificarli al volo (be', avendo i tool di
Acrobat, si capisce).
Riassumendo, _potrebbe_ essere un'ottima idea, bisogna vedere per il
caso specifico :-)
Leonardo
