Problema utenti di diverso livello

  • Creatore Discussione Creatore Discussione taba93
  • Data di inizio Data di inizio

taba93

Nuovo Utente
24 Nov 2007
21
0
0
Ciao a tutti...ho un problema nel login di utenti di diverso livello (i livelli sono 2: amministratore e moderatore):

nella pagina che mi controlla se il login è giusto il codice è questo:

PHP:
<?php 

include "includes/config.inc.php"; 

//Connessione al db mysql 
$db = mysql_connect($db_host, $db_user, $db_password); 
    if ($db == FALSE) 
    die ("Errore nella connessione al database. Verificare i parametri nel file config.inc.php"); 
    else { 
    } 
//Selezione del database 
mysql_select_db($db_name, $db) 
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php"); //connessione al database 

$username = $_POST['username']; 
$passwd = $_POST['passwd']; 

$sql="SELECT * FROM users WHERE username='$username' and passwd='$passwd'"; 
$result = @mysql_query($sql); 
$count = @mysql_num_rows($result); 

if($count==1){ 

session_register ("username"); 
session_register ("potere"); // è il livello dell'utente   
header("location:login_success.php?user=$username"); 
} 
else { 
echo "Attenzione username o password errati!<br><br>Reinseriscili cliccando <a href=\"http://www.rainerum.it/media/docenti.php\">QUI</a>."; 
} 
?>

poi ho la pagina login_successfull.php che ha questo codice e che ci manda ad una pagina di amministrazione dove ci sono scritte tutte le cose che si possono fare e a questa vi possono accedere tutti (moderatori ed amministratori):

PHP:
<?php 
session_start(); 
$username = $_GET['user']; 

if(session_is_registered(username)) { 
echo"Benvenuto $username! Accedi da <a href=\"index.php\">QUI</a> all'inserimento di contenuti."; 
} 
else { 
    header('location:login.php'); 
} 


?>

Da lì poi uno sceglie per esempio di andare a modificare gli utenti cliccando su un link k ci manda alla pagina usermanager.php (a questo punto in questa pagina c'è un if che dice che se la sessione registrata del livello dell'utente è pari a 1 (amministratore)gli fa vedere il contenuto della pagina. altrimenti non gliela fa vedere.
il codice della pagina è questa (ometto tutto il codice effettivo di usermanager.php xke è inutile ai fini del problema in quanto so che quello funziona perfettamente):

PHP:
<?php 
session_start(); 
if ($_SESSION["potere"] == "1"){ 

//fai vedere tutto 


} 
else { 
echo "Non sei autorizzato ad entrare"; 
} 
?>

Mi sapreste dare una mano? grazie

comunque il problema è che sembra che non salvi alcuna sessione del livello perchè mi dice che non ho le autorizzazioni per entrare nonostante il mio livello sia settato a "1"
 
Come prima cosa sconsiglierei di utilizzare la funzione session_register() in quanto deprecata, sarebbe meglio utilizzare $_SESSION["parametro"] = "valore"; Inoltre nel file in cui accedi al DB non vedo session_start(); Poi, quando salvi in sessione i valori username e potere non vedo alcuna inizializzazione della varianile potere.
 
Per le prime due cose ho rimediato.
Per la terza invece non so come fargliela inizializzare. perchè se io entro come amministratore deve estrarre dal db la colonna potere dell'username che si è loggato e salvare la sessione "potere" con il "numero di potere" dell'user che si è loggato.
Ma non ho idea di come dirglielo...
avresti qualke idea in proposito?
Ciao!
 
Immagino che tale informazione sia presente nel DB, magari nella tabella users sulla quale esegui la query. Tu effettui solamente il conteggio dei risultati per capire se l'utente è presente nel DB, ma non recuperi alcun tipo di dato.
Ora, supponendo che l'informazione sul valore della variabile potere sia presente nella tabella user potresti recuperarla in questo modo, nella parte di codice in cui effettui la query aggiungi:

PHP:
$sql="SELECT * FROM users WHERE username='$username' and passwd='$passwd'"; 
$result = @mysql_query($sql); 
$count = @mysql_num_rows($result);  

$record = mysql_fetch_row($result);
$potere = $record[indice_colonna];

Al posto di indice_colonna metti il numero della colonna contenente il valore di potere. Considera però che gli indici partono da zero.
 

Discussioni simili