Newsgroup: it.comp.www.php
Titolo: Area riservata sito

Ciao a tutti,
avrei bisogno di mettere su un sito un'area riservata protetta, a cui si può
accedere tramite utente e password.
Il problema è che deve essere sicura, nel senso che devo mettere delle
sottocartelle contenenti pagine html e altri documenti, e senza aver fatto
l'autenticazione non dev'essere possibile poterle vedere, neanche passando
l'url giusto per arrivare ad una pagina html (spero di essermi spiegato).
Ho pensato che si potrebbe fare sfruttando le restrizioni del server apache
(.htaccess), ma non so come interfacciarmi col php.
Dovrei fare una tabella con i nomi e le password degli utenti che possono
entrare, i quali possono accedere ad una o più delle sottocartelle (cioé le
possono visualizzare): una volta entrati gli utenti hanno un sommario con i
link di cosa possono visualizzare.
Spero di essere stato abbastanza chiaro.
Vi prego di darmi un consiglio su come fare...
Grazie
--
*®*´¯`·.¸¸.·´¯`·-··._(-=/- Darcan -\=-)_.··-·´¯`·.¸¸.·´¯`*®*

Come dici tu puoi limitare gli accessi da server tramite il file
htaccess; in questo caso che le tue pagine siano html o php non fa
differenza, in quanto sarà il server stesso a limitare l'accesso e non
uno script.
Ergo rivolgiti al ng di apache ;)
Oppure se vuoi farlo in php devi andare a scrivere da qualche parte:
o usi un database (tipo mysql)
oppure scrivi su file
Ciao
Cla

 ha scritto nel messaggio
news:affraq$2g2$2...@lacerta.tiscalinet.it...


 Cla
Ciao e grazie veramente per l'aiuto.


 Cristiano
Ciao e grazie 1000.


 permessi), ma questo si può vedere dopo...
Con apache si può fare.
Non saprei dirti esattamente come dato che non mi sono finora
preoccupato di studiarlo, ma configurando opportunamente il file
htaccess e le proprietà della document root, puoi creare diversi account
su diverse directory e con diversi privilegi.
Tutto questo senza passare da php, in quanto è il server stesso (apache)
a gestire tutto.
Per esempio tu hai il tuo sito nella tua document root, crei una
directory "private" e la proteggi con apache.
Se metti un link ad una pagina interna a quella directory nel sito, il
browser effettuerà un pop-up (tipo quello del passport di M$) comandato
dal server (apache) richiedendoti user e pass, se li inserisci corretti
entri nella pagina,altrimenti no.
Per quanto riguarda le tue domande di un altro post su cookies e
sessioni: anche io ho le idee parecchio confuse...
Anzi non c'ho capito un benemerito e vorrei che qualcuno me le spiegasse
:''''''( (faccina di supplica)
Ciao
Cla

 Ah, elimina anche la possibilitŕ che le pagine finiscano in cache
Come si fa?
Grazie
Claudio

 entri nella pagina,altrimenti no.
Ecco, sono andato in questa pagina
http://httpd.apache.org/docs/howto/auth.html
per cercare informazioni su sta cosa e vedere anche come si poteva fare il
logout.
Risposta? Eccola:
-----------------------------------------------------
How do I log out?
Since browsers first started implementing basic authentication, website
administrators have wanted to know how to let the user log out. Since the
browser caches the username and password with the authentication realm, as
described earlier in this tutorial, this is not a function of the server
configuration, but is a question of getting the browser to forget the
credential information, so that the next time the resource is requested, the
username and password must be supplied again. There are numerous situations
in which this is desirable, such as when using a browser in a public
location, and not wishing to leave the browser logged in, so that the next
person can get into your bank account.
However, although this is perhaps the most frequently asked question about
basic authentication, thus far none of the major browser manufacturers have
seen this as being a desirable feature to put into their products.
Consequently, the answer to this question is, you can't. Sorry.
-----------------------------------------------------
Bella roba: YOU CAN'T !!!
E allora come si può fare se non posso neanche fare il logout? Una volta che
uno entra il pc non gli domanda + la password, e allora potrebbe entrare
chiunque...
Boh???
Ciao


chiunque...
Finche non chiude il browser, a meno che l'utente non decida di
salvarla.
Bonf

 chiunque...
Ti affidi al php e alle sessioni/cookies
Così hai un range del tempo di validità dell'autenticazione liberamente
impostabile.
Ciao
Cla

link di cosa possono visualizzare.
Io sono partito da questo esempio e l'ho modificato per meglio adattarlo
alle mie esigenze:
http://www.webmasterbase.com/article.php/319/6
http://www.webmasterbase.com/article.php/319/78
Se invece ti interessa farlo sfruttando Apache:
http://www.devshed.com/Server_Side/PHP/UserAuth/print
Cerca anche degli script già fatti, per farti un'idea:
join-auth
HTAdmin
vAuthenticate
...etc...
cerca su 
http://www.hotscripts.com/PHP/
Cordiali saluti,
Tiziano.
--
http://www.studio2001.it

 Tiziano.
Grazie ancora....
Ciao


di seguito c'è lo script che uso io... credo che sia quello che intendi 
tu... questo codice devi inserirlo in un file .inc che includerai 
all'inizio di ogni pagina del sito che fai... in questo modo ogni pagina 
che l'utente guarda è protetta e verrà visualizzata solo se l'utente è 
collegato
il problema dello script è che per disconnettere l'utente deve chiudere 
il browser se una persona prova a rientrare senza chiudere il browser 
rienterà con il nick del vecchio utente
di buono c'è che è il browser che pensa a fare uscire la finestra con 
utente e password
in questo esempio ho criptato la password
<?php
  if(!isset($PHP_AUTH_USER)) {
   Header( "WWW-authenticate: basic realm=\"EtruriaWorld\"");
   Header( "HTTP/1.0 401 Non autorizzato");
   $title= "Istruzioni per il Login:";
?>
Per entrare nel gioco è necessario essere autorizzati, probabilmente non 
sei registrato...<br>
Se invece sei registrato ma non riesci ad entrare prova a contattare:<a 
href="mailto:
ma...@mail.it
">quello che ti pare</a>.
<?php
   exit;
  }
  else {
   mysql_pconnect("localhost","nobody","") or die("Impossibile stabilire 
una connessione con il server SQL");
   mysql_select_db("nomedb") or die("Impossibile selezionare il database");
   $Utente=strtolower($PHP_AUTH_USER);
   //echo($Utente);
   $Password=strtolower($PHP_AUTH_PW);
   $Password=crypt($Password,"AC");
   //echo($Password);
   $query = "SELECT nick FROM Utente where nick='$Utente' and 
password='".$Password."';";
   //echo($query);
   $query = mysql_query($query);
   //echo($query);
   if(!mysql_num_rows($query)) {
    Header( "WWW-authenticate: basic realm=\"EtruriaWorld\"");
    Header( "HTTP/1.0 401 Non autorizzato");
    $title= "Istruzioni per il Login:";
?>
Per entrare nel gioco è necessario essere autorizzati, probabilmente non 
sei registrato...<br>
Se invece sei registrato ma non riesci ad entrare prova a contattare:<a 
href="mailto:
ma...@mail.it
">quello che ti pare</a>.
<?php
    exit;
   }
   mysql_free_result($query);
  }
?>

 di seguito c'è lo script che uso io...
Ma con questo script si riuscirebbe a proteggere anche la cartella e tutto
quello che contiene (immagini, documenti pdf, ...) ?
Io avrei dei file php che posso proteggere con questo sistema, ma
l'autenticazione dell'utente deve servire anche per poter accedere ai file
della cartella: cioé se l'utente non fa il login non deve poter accedere al
file tipo 
http://nome.sito.com/cartellaprotetta/documento.pdf
.
Questa cosa si potrebbe fare utilizzando .htaccess, e però, per essere più
user-friendly, l'autenticazione dovrebbe essere unica: l'utente arriva alla
pagina 
http://nome.sito.com/login.php
 , inserisce lo user e la password e
viene rimandato ad una pagina 
http://nome.sito.com/pagina.php
 (che potrebbe
utilizzare lo script tuo) che visualizza un sommario delle cose contenute in
http://nome.sito.com/cartellaprotetta/
 (che contiene anche pagine html e
immagini)...
Spero di aver reso l'idea sulla situazione, perché è un po' complessa...
Grazie 1000 dell'aiuto!


Ma uno script che autenticato l'utente, modifichi il file di accesso del
server (sempre che tu abbia accesso al server) permettendo l'ip singolo?
Ciao
Cla

 Cla
Ciao e grazie


Tu hai il tuo file di config del server (htaccess per esempio) e la
directory la configuri come
Deny from all
allow from 127.0.0.1
Quando un utente si autentica correttamente, tu modifichi quel file
aggiungendo all'allow l'ip dell'utente, e lo spedisci dove vuoi.
Ciao
Cla

 Cla
Ciao


 In + c'è il problema di rimuovere l'ip da .htaccess alla fine...
Questo è un problema che mi pongo ancora riguardo alle sessioni ed ai
server:
servirebbe un'esecuzione automatica a tempi prestabiliti di determinati
script...
Ma ciò è possibile?
Mi pare di no putroppo :(
Ciao
Cla

 Mi pare di no putroppo :(
Non so se è possibile ma sarebbe un po' incasinato :)
