Pagina 1 di 1

Php sessione post login

Inviato: mar 11 ago 2009, 22:08
da oim
Salve ragazzi...

Premetto che me ne intendo poco di php e che vengo dal c++...

il mio problema è come fare per indirizzare a 3 pagine diverse dopo aver effettuato il login...

ho 3 tipi di utenti:

1) admin
2) super utente
3) utente

vorrei che se vengono iserite le credenziali dell'admin si aprisse admin.php, se quelle del super utente la sua pagina e se l'utente la sua pagina...

Ho impostato la tabella del login con questi campi

Nome utente
Password
Type (admin, super utente, utente) in questo modo posso controllorae il tipo di utente!!

Il mio file index.php è questo:

Codice: Seleziona tutto

<form action="login.php" method="post">
		<input type="hidden" name="form" value="on" >
		Nome utente&nbsp;<input type="text" name="username"/>
		Password&nbsp;<input type="password" name="user_password"/>
		<input type="submit" value="Accesso"/>
	</form>
	<p>Inserisci username e password corretti per fare login.</p>
	<?php
		} 
		
		
		else { echo "Ciao ".$_SESSION['username']."!";
		
		if ( sessionReservedAreaCheck("consulente") == true ){
		header('Location: http://laboratoriomax.altervista.org/consulente.php');
		}
		else{
		if( sessionReservedAreaCheck("admin") == true ){
		header('Location: http://laboratoriomax.altervista.org/admin.php');}
		else{
		if ( sessionReservedAreaCheck("utente") == true ){
		header('Location: http://laboratoriomax.altervista.org/utente.php');}
		}
		}
		
		//HTML
	?>
	<p></p><a href="logout.php">Logout</a></p>
<?php } ?>
</body></html>
<?php mysql_close(); ?>
Mentre la funzione sessionReservedAreaCeck è questa:

Codice: Seleziona tutto

function sessionReservedAreaCheck ($userType) {
		$typeQuery = "SELECT type FROM utenti WHERE username = '{$_SESSION['username']}' AND user_password = '{$_SESSION['user_password']}'";
		$type = mysql_fetch_Array ( mysql_query ($typeQuery) );
		if ( mysql_error() == true ) { echo "<p>".mysql_error()."</p>"; }
		else {
			if ( $type['type'] != $userType ) { $userType = false; session_destroy(); }
			else { $userType = true; echo "Ciao ".$_SESSION['type']."!";}
		}
		return $userType;}
Qualcuno sa darmi qualche dritta ragazzi??

Mi finziona solo se accedo come super utente!!! :(

Re: Php sessione post login

Inviato: mar 11 ago 2009, 23:51
da cymon
oim ha scritto:Salve ragazzi...
Qualcuno sa darmi qualche dritta ragazzi??

Mi finziona solo se accedo come super utente!!! :(
Non capisco molto di PHP, ma voglio dare il mio contributo con una domanda intelligente. Col admin e con lo user normale cosa fa? Crasha? Rimane sulla pagina di login? Va sempre sulla pagina del super utente?

Re: Php sessione post login

Inviato: mer 12 ago 2009, 1:13
da oim
mi dice che non ho inserito i dati corretti...

se accedo con account di tipo super utente (consulente) allora funziona... altrimenti niente... è come se non leggesse gli ultimi 2 if dell'index.php

Re: Php sessione post login

Inviato: mer 12 ago 2009, 9:00
da ccts2002
penso che con quel session_destroy() tu cancelli tuttti i dati della sessione e quindi le successive chiamate a sessionReservedAreaCheck("*") non possono mai creare la query e controllare che tipo di utente sia. prova ad eliminare quel session_destroy()

Re: Php sessione post login

Inviato: mer 12 ago 2009, 9:55
da raffaele181188
Infatti, e poi perchè vorresti distruggere la sessione? Se posso permettermi questo suggerimento

Codice: Seleziona tutto

// La funzione di check usa queste costanti
define ('GUEST', 0);
define ('USER', 10);
define ('SUPER', 20);
define ('ADMIN', 300);

function authorize($user, $pass) {
   // mysql_real_escape_string(); // User e password
   // la password nel database è salvata in chiaro? Non è il massimo della sicurezza
   // Anzichè ritornare una stringa puoi ritornare un intero (ed eventualmente salvare l'intero anche nel db anzichè la stringa
   return GUEST / USER / SUPER / ADMIN / ...
}

// Nel tuo index.php
$redirect = '';
switch(authorize($_SESSION['user'], $_SESSION['pass'])) {
   case USER: $redirect = 'user.php';
   case SUPER: $redirect = 'super.php';
   case ADMIN:
      $redirect = 'admin.php';
      header ("Location: $redirect");
}

Re: Php sessione post login

Inviato: mer 12 ago 2009, 17:44
da oim
salve a tutti ragazzi!!!

ho risolto in un altro modo!!!

Ora però sto cercando un programmatore PHP che mi aiuti a finire il progetto per un'azienda!!!

il più è fatto manca solo la parte di caricamento dati!!!

Purtroppo a causa della tesi e degli ultimi esami non ho tutto il tempo che mi occorre per finire...

Cerco qualcuno che mi aiuti nella fase finale..

Sono disposto a fare a metà del compenso 200€ (100€ a testa)

Chiunque fosse interessato mi contatti!!!