Avevi scritto bene, manca solamente una piccola aggiunta, l'ideale è avere una tabella SQL "utenti" con campi ID, USERNAME, PASSWORD, PROFILO, nella session recupererai il Profilo e lo Username, farai un fieldset che con la session recupererai lo username ed il profilo e scriverai benvenuto Floopop Profilo: Admin oppure Benvenuto Fractalcosmo profilo:Utente, recuperando lo username e il profilo(che puoi non mostrare nel fieldset, ovviamente) ma recuperando il profilo non scriverai
Codice PHP:
if (isset($_SESSION['username']) == "utente"){
//mio codice
}
else{
print "Non sei abilitato alla pagina";
}
Ma scriverai (ricordati di mettere l'exit però...):
Codice PHP:
if (isset($_SESSION['profilo']) == "amministratore"){
//mio codice
}
else{
print "Non sei abilitato alla pagina";
exit;
}
L'ideale a mio avviso, poi ognuno fa come vuole, è scrivere una funzione di session ed una funzione di recupero valori se ti dovesse servire per esempio in un model mvc, ti posto due funzioni e come recupero il profilo nelle funzioni dove è permesso il lavoro all'amministratore, ovviamente la global dati è una funzione in più che recupera dei valori in globale se dovessi aver bisogno di recuperare il profilo ma dentro dei metodi....ti posto l'esempio con le due funzionalità..Ciao
File funzioni.php
Codice PHP:
function globalDati(){
security_session();
$idUtente="";
$userLoggato = "";
$profiloUtente = "";
$data = "";
$ora = "";
$datiUtente = $_SESSION['datiUtente'];
$idUtente = $datiUtente['idUtente'];
$userLoggato = $datiUtente['username'];
$profiloUtente = $datiUtente['profilo'];
setlocale(LC_TIME, 'it_IT');//Settiamo il timezone per l'orario
date_default_timezone_set("Europe/Rome");
$data = date("l j F, Y");
$ora = date('G:i:A');
$parametriGlobali['profiloUtente'] = $profiloUtente;
$parametriGlobali['userLoggato'] = $userLoggato;
$parametriGlobali['idUtente'] = $idUtente;
$parametriGlobali['data'] = $data;
$parametriGlobali['ora'] = $ora;
return ($parametriGlobali);
}
function security_session(){
$session_name = 'login_webLog'; // Imposta un nome di sessione
$secure = false; // Imposta il parametro a true se vuoi usare il protocollo 'https'.
$httponly = true; // Questo impedirà ad un javascript di essere in grado di accedere all'id di sessione.
ini_set('session.use_only_cookies', 1); // Forza la sessione ad utilizzare solo i cookie.
$cookieParams = session_get_cookie_params(); // Legge i parametri correnti relativi ai cookie.
session_set_cookie_params(0); //Questo chiude distrugge i cookie chiudendo il browser bisognerà rifare il login,altrimenti la sessione rimane attiva chiudendo e riaprendo il browser
session_name($session_name); // Imposta il nome di sessione con quello prescelto all'inizio della funzione.
session_start(); // Avvia la sessione php.
session_regenerate_id();
}
File model.php
Codice PHP:
include_once "funzioni.php";
class router_ajax_model{
public function gestioneTabelle($azione){
$recuperoGlobali = globalDati();
if ($recuperoGlobali['profiloUtente'] != 'amministratore'){
$msg = "Non hai le abilitazioni per questa funzionalità";
$msg = htmlentities($msg);
echo $msg;
exit;
}
}
//Oppure
public function permessi(){
//var_dump($GLOBALS);
security_session();
$parametriGlobali = globalDati();
ob_start();
if ($parametriGlobali['profiloUtente']=="amministratore"){
//mio codice
}
else{
print "non sei abilitato";
exit;
}
}
public function gestioneUtente($azione){
security_session();
//var_dump($_SESSION);
$datiUtente = $_SESSION['datiUtente'];
$profilo = $datiUtente['profilo'];
if ($profilo=="amministratore"){
//mio codice
}
else{
$msg = htmlentities("Non hai le abilitazioni per questa funzionalità");
print $msg;
exit;
}
//Questo metodo invece è la convalidaLogin, cioè quando devi convalidare il login gli altri metodi invece vengono usati a //Login effettuato, buona norma è inserire anche una funzione di check_login...
public function convalidaLogin(){
//check_login();
security_session();
if( !isset($_GET['username']) || empty($_GET['username']) || trim($_GET['username'])=='')
{
$msg = "|";
$msg .="USER_VUOTO";
$msg = str_replace("\n", "", $msg);
$msg = str_replace("\r", "", $msg);
print $msg;
exit;
}
if(!isset($_GET['password']) || empty($_GET['password']) || trim($_GET['password'])=='')
{
$msg = "|";
$msg .="PASS_VUOTA";
$msg = str_replace("\n", "", $msg);
$msg = str_replace("\r", "", $msg);
print $msg;
exit;
}
//Apriamo il Db PhpMyAdmin
$db =connetti();
//Caso errore connessione
if ($db->connect_error) {
$msg = "|";
$msg .= "ERRORE_CONNESSIONE"."|";
$msg .= "Impossibile connettersi a MySQL: (" . $db->connect_errno . ") " . $db->connect_error;
$msg = str_replace("\n", "", $msg);
$msg = str_replace("\r", "", $msg);
print $msg;
exit;
}
$sql = $db->prepare("SELECT * FROM utenti WHERE username = ? AND password = ?");
$sql -> bind_param('ss', $username, $password);
$username = trim($_GET['username']);
$password = md5($_GET['password']);
$sql->execute();
$sql->store_result();
if ($sql->num_rows() == '1'){
$sql -> bind_result($id,$username, $profilo, $password);
if ($sql->fetch()){
//------------------------VALORI DELL'UTENZA-----------
$user_browser = $_SERVER['HTTP_USER_AGENT'];
$idUtente=$id;
$profilo=$profilo;
$username = $username;
$datiUtente = array('idUtente'=>$idUtente,
'username'=>$username,
'profilo'=>$profilo);
$_SESSION['datiUtente']=$datiUtente;
$msg = "|";
$msg .="OK";
$msg = str_replace("\n", "", $msg);
$msg = str_replace("\r", "", $msg);
print $msg;
exit;
}
}
//------------------
//Chiude Mysql DB
chiudiConnessione($db);
$msg = "|";
$msg .="UTENTE_ASSENTE";
$msg = str_replace("\n", "", $msg);
$msg = str_replace("\r", "", $msg);
print $msg;
}
}
Come vedi ci sono varie metodologie...Ciao