login semplificato

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
salve, tramite questo codice vorrei far in modo che in qualsiasi pagina che voglio proteggere basta inserire secure.inc.php, mentre tramite il controllo della funzione loggedIn() verifico in qualsiasi pagina se l'utente ha fatto il login e fargli vedere altri tipi di contenuti: vi posto tutte le pagine:


il problema è questo: quando vado sulla pagina admin.php tutto mi funziona perchè mi fa vedere il form di login e in caso che inserisco i giusti valori (in questo caso 'emanuele' e 'login') mi fa visualizzare 'area amministrativa' e anche il logout mi rimanda al form; ma fatto il login correttamente, se vado in index.php invece di farmi vedere

hai eseguito correttamente il login <br />
altri contenuti

mi fa login non eseguito.


index.php: questa pagina non è protetta ma appena l'utente ha fatto il login fa visualizzare altri contenuti e da la possibilità di eseguire un logout:



Codice:
//includo la funzione loggedIn() in grado di visualizzare il login / logout
[COLOR="blue"]<?php include_once[/COLOR] [COLOR="red"]'access.inc.php'[/COLOR]; [COLOR="blue"]?>[/COLOR]<html>
<head>
</head>
<body>


questa non è una pagina protetta.

// se l'utente ha fatto il login mostra altri contenuti
// e il link contenente la variabile logout=1
[COLOR="blue"]<?php if(loggedIn()): ?>[/COLOR]

hai eseguito correttamente il login <br />
altri contenuti

<a href="<[COLOR="blue"]?php echo $_SERVER['PHP_SELF']; ?[/COLOR]>?[COLOR="red"]logout=1[/COLOR]"> logout</a>


// altrimenti se l'utente non ha fatto il login
// visualizza login non eseguito
[COLOR="blue"]<?php else: ?>[/COLOR]

login non eseguito
[COLOR="blue"]<?php endif; ?>[/COLOR]



</body>
</html>

access.inc.php: contiene la funzione loggedIn() determinante per vedere se l'utente ha fatto il login o il logout -> qui il file config.inc.php serve per includere i valori di confronto che devono corrispondere :

Codice:
<?php 

// includo i valori per username e password
[COLOR="blue"]require_once[/COLOR] [COLOR="red"]'config.inc.php'[/COLOR];

// costruisco la funzione loggedin()
[COLOR="blue"]function[/COLOR] [COLOR="red"]loggedIn[/COLOR](){

// la funzione mi deve ritornare un alore booleano corrispondente a 
//$_SESSION['authorized'] 
 [COLOR="blue"]return isset[/COLOR]([COLOR="red"]$_SESSION['authorized'][/COLOR]);
}

// verifico il corretto inserimento di username e password
[COLOR="blue"]if[/COLOR]([COLOR="blue"]isset[/COLOR]([COLOR="red"]$_POST['submit'][/COLOR])){
	[COLOR="blue"]if[/COLOR]([COLOR="red"]$_POST['username'][/COLOR]==[COLOR="red"]ADMIN_USER [/COLOR][COLOR="blue"]and [/COLOR][COLOR="red"]$_POST['password'][/COLOR]==[COLOR="red"]ADMIN_PASS[/COLOR]){
	[COLOR="red"]$_SESSION['authorized'][/COLOR]=[COLOR="red"]TRUE[/COLOR];	
	}
}

// verifico se l'utente ha richiesto logout
[COLOR="blue"]if[/COLOR]([COLOR="blue"]isset[/COLOR]([COLOR="red"]$_REQUEST['logout'][/COLOR])){
 [COLOR="blue"]unset[/COLOR]([COLOR="red"]$_SESSION['authorized'][/COLOR]);
}
?>


config.inc.php: serve per configurare i valori costanti) che devono corrispondere a username e password

Codice:
<?php 

[COLOR="blue"]define[/COLOR]('[COLOR="red"]ADMIN_USER'[/COLOR],'[COLOR="red"]emanuele[/COLOR]');
[COLOR="blue"]define[/COLOR]('[COLOR="red"]ADMIN_PASS[/COLOR]','[COLOR="red"]login[/COLOR]');
?>

admin.php: è una pagina protetta che richiede il login prima di essere eseguita

//inserisco la pagina che fa avviare la procedura di login
//nel caso che non sia stato già eseguito

Codice:
[COLOR="blue"]<?php require[/COLOR] '[COLOR="red"]secure.inc.php[/COLOR]'; [COLOR="blue"]?>[/COLOR]<html>
<head>
</head>
<body>

area amministrativa<br />

<a href="[COLOR="blue"]<?php echo[/COLOR] [COLOR="red"]$_SERVER['PHP_SELF']; [COLOR="blue"]?>[/COLOR]?logout=1"[/COLOR]> logout</a>


</body>
</html>


secure.inc.php: verifica che la funzione loggedin() sia stata eseguita altrimenti fa visualizzare il form

Codice:
[COLOR="blue"]<?php [/COLOR]

[COLOR="blue"]require_once[/COLOR] 'access.inc.php';
[COLOR="blue"]if[/COLOR](![COLOR="red"]loggedIn()[/COLOR]){
[COLOR="blue"]echo [/COLOR][COLOR="red"]'non va bene[/COLOR]<br />';
[COLOR="blue"]include[/COLOR] '[COLOR="red"]login.inc.php[/COLOR]';
[COLOR="blue"]exit;
}

?>[/COLOR]


infine login.inc.php serve a far visualizzare il form per inserire username e password:

Codice:
<html>
<head>
</head>
<body>
<div>
<form action="[COLOR="blue"]<?php echo[/COLOR] [COLOR="red"]$_SERVER['PHP_SELF'][/COLOR]; [COLOR="blue"]?>[/COLOR]" method="post">
<label>User name:<input type='text' name='username' /></label><br />
<label>Password:<input type='password' name='password' /></label><br />
<input type='submit' value='log in' name='submit'/>

</form>
</div>
</body>
</html>


per quale motivo?

p.s. per semplicità non ho usato un database con sistema md5 o altri... ma dovrò inserirlo
 
ok ho risolto;

il problema è che mi sono completamente dimenticato di session_start();
 

Discussioni simili