View Full Version : [php] proteggere "bene" una cartella
bouncey2k
05-12-2007, 20:21
Ciao a tutti!
Mettiamo che io abbia una pagina password.php con un form di invio password che mi serve per accedere a /cartella/admin.php
La pagina /cartella/admin.php preleva la password tramite un semplice costrutto IF-ELSE e se è valida mostra la pagina.
Mettiamo che in /cartella/admin.php ci siano vari link utili all'amministratore che anch'essi dovrebbero essere protetti, come ad esempio /cartella/pannello1.php /cartella/pannello2.php, ecc...
come faccio a proteggere tutta la cartella senza impostare password ad ogni pagina?
Memorizzi nella sessione se l'utente è riuscito o meno ad avere accesso amministrativo.
Ad esempio:
$_SESSION["isAdmin"] = 1;
Nelle altre pagine controlli se $_SESSION["isAdmin"] esiste...se esiste allora permetti l'accesso alle pagine.
bouncey2k
06-12-2007, 12:10
un esempio di script?
Se se su un hosting che ha effettuato il passaggio a php5 allora puoi usare questa,
http://www.phpclasses.org/browse/package/4125.html
è una classettina che ho fatto tempo fa, nel readme trovi le istruzioni per utilizzarla.
Ciao
bouncey2k
15-01-2008, 17:24
scusate se riapro questo vecchio post ma avrei bisogno di capire dove sbaglio.
pagina1.php
<?
session_start();
session_register("variabile");
$variabile = "ciccia";
echo "password esatta!<br />
<a href=\"pagina2.php\">test3</a>";
?>
pagina2.php
<?
session_start();
if ( !isset ($variabile) )
{ echo "la sessione e' attiva"; }
else
{ echo "la sessione non e' attiva"; }
?>
Perché mi dice che la sessione non e' attiva? :muro:
Hai letto il mio post ? Non mi sembra guardando il tuo codice.
bouncey2k
15-01-2008, 17:44
Hai letto il mio post ? Non mi sembra guardando il tuo codice.
hai scritto una sola riga di codice, se tu me lo spiegassi... magari con qualche riga di più :)
Non c'è altro da spiegare.
All'inizio del tuo codice crei la sessione con session_start(); come hai fatto nel codice che hai postato.
Poi immetti le variabili nella sessione...la sessione è rappresentata dal vettore associativo $_SESSION.
$_SESSION["var1"] = 1;
immette la variabile var1 nella sessione.
if ( isset($_SESSION["var1"]) )
{ echo "la sessione e' attiva"; }
else
{ echo "la sessione non e' attiva"; }
bouncey2k
15-01-2008, 18:08
Ho fatto come mi hai detto, ma ho una domanda. Nella seconda pagina session_start() lo devo inserire?
Cmq sia che lo inserisco che non, se vado direttamente su pagina2.php mi dice "la sessione è attiva" (ho riavviato anche il browser), invece dovrebbe dirmi che non è attiva...
session_start va sempre messo.
No...se vai direttamente su pagina2 dopo che hai chiuso il browser ti dice che non è attiva perché nessuno ha immesso la variabile in $_SESSION.
Se vai prima in pagina1 e poi in pagina2 funziona ?
bouncey2k
16-01-2008, 11:08
Ok, adesso pare funzionare. Ma c'è un modo per non far comparire nella barra degli indirizzi l'id della sessione?
pagina2.php?PHPSESSID=numero...
Normalmente non dovrebbe comparire.
bouncey2k
16-01-2008, 13:06
Normalmente non dovrebbe comparire.
quindi come posso risolvere?
Il session id di default dovrebbe essere propagato tramite cookie, hai per caso toccato qualcosa in php.ini ? Hai i cookies attivi ?
bouncey2k
16-01-2008, 18:46
Il session id di default dovrebbe essere propagato tramite cookie, hai per caso toccato qualcosa in php.ini ? Hai i cookies attivi ?
Non ho toccato nulla in php.in (non penso di poterlo modificare visto che il server non è il mio).
Non ho toccato nulla in php.in (non penso di poterlo modificare visto che il server non è il mio).
E allora il server attiva automaticamente la propagazione tramite GET dell'id di sessione, credo che tu non ci possa fare niente...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.