privilegi utenti php

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
Ciao a tutti =) so bene che questo è un argomento già trattato e infatti ho preso spunto per iniziare a creare almeno la struttura.

Ho creato nel DB un campo "grado" dove di default tutti gli utenti che si registrano vengono memorizzati come "member"
Il problema è che non capisco come fare il controllo del grado..

Questo è il codice fatto fin ora

Grazie per il vostro aiuto

pagina di login.php
PHP:
<?php 
	
	session_start();
	
	
	/*if(session_is_registered('Logged'))*/ 
	if (isset($_SESSION['auth']))  {
		
			header("location: backend.php");
	
	} else {
	
	

			if(!isset($_POST['submit'])) { 
		echo '<div id="box-login"> 
				<form method="post" action="#" id="accesso_utenti">
					<h3>Accesso Admin</h3>
					<div id="user"><span> Username </span><input type="text" name="username"> <br /></div>
					<div id="pass"><span> Password</span> <input type="password" name="pass"> <br /></div>
					<input type="submit" value="Entra" name="submit" id="bottone">
				</form>
			</div>';
	}
	else { 
		include 'config.php';
		include 'connect.php';
		$user = mysql_real_escape_string($_POST['username']); 
		$pass = mysql_real_escape_string($_POST['pass']);
		
		$query = sprintf("SELECT * FROM users WHERE username  = '" .$user ."' AND pass= '" .sha1($pass)."'");
		$result = mysql_query ($query, $conn) or die("Errore nella query");
		$num_rows = mysql_num_rows($result); 
		
	
		if ($num_rows == '1') {
			header("location:" . $path."/admin/backend.php");
			$_SESSION['auth']=$user;
			
			/*session_register("Logged");*/
			
			
}
		else {
			
			echo '<div class="benvenuto"> 
					<p>Dati errati: </p> 
					<a href="index.php">Ritenta</a>
				 </div>';
		}
		
		
	}
	
	}


?>

pagina protetta

PHP:
 <?php
session_start();

 if(!isset ($_SESSION['auth'] )) {
	 echo "effettua il login per accedere";
	 
	 if(isset ($_SESSION['grado' == "member"]  )) {
   	 	die('Non sei autorizzato ad accedere a questa pagina.');
	} 
 } 

 else
		{
				
			echo '<div class="benvenuto">
					<p>
						Benvenuto ' .$_SESSION['auth'].'! sei collegato al pannello di amministrazione. <br/>
						scegli quale pagina vuoi gestire! 
					</p> 
					
					<p> <a href="logout.php">Logout</a> </p>
					
						<a target="_blank" href="../index.php">torna al sito</a>
				 </div>';			
		
		?>
		
		Sono abilitato a vedere il contenuto
		
		<?php } ?>
        
        </div>
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Per implementare un controllo del grado puoi aggiungere un campo alla tabella membri chiamato 'grado' e da li vedi il grado dell'utente e dai alcuni privilegi solo a chi ha un certo tipo di grado appunto contenuto in quel campo della tabella.
 

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
Ciao!
ho già creato un campo "grado" nel database però non riesco a gestirlo..

PHP:
if(isset ($_SESSION['grado' == "member"]  )) {
            die('Non sei autorizzato ad accedere a questa pagina.');
    }
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Quindi vuoi limitare l'accesso ad alcune pagine a chi è solo un membro.
Quel codice è sbagliato, prova a correggerlo così:

PHP:
if(isset ($_SESSION['grado'] == "member" )) {

            die('Non sei autorizzato ad accedere a questa pagina.');

    }
 

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
Esattamente è proprio quello che devo fare.
Così però ci avevo già provato e mi da errore. Il login viene eseguto e non vedo la scritta: 'Non sei autorizzato ad accedere a questa pagina' e vengo regolarmente ricondotto a backend.php completamente bianca
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Aspetta scusa un attimo. Ho corretto l'errore più lampante di quel codice e non l'altro.
Usa questo:
PHP:
if(isset ($_SESSION['grado']) && $_SESSION['grado'] == "member" )) {



            die('Non sei autorizzato ad accedere a questa pagina.');



    }
Comunque in questo modo anche un utente che non é membro ha l'accesso alla pagina. Questo codice impedisce l'ingresso ai membri e basta.
 

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
mmm dici?

PHP:
if(!isset ($_SESSION['auth'] )) {
	 echo "effettua il login per accedere";
	
	if(isset ($_SESSION['grado']) && $_SESSION['grado'] == "member" ) { 

             echo "non hai i privilegi";

    }  
 }

ho comunque il controllo if(!isset ($_SESSION['auth'] )) { per vedere se l'utente è loggato o no e gli utenti registrati vengono sempre forzati al grado di member
N.B. ['grado'] fa riferimento al nome della tabella nel database?
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
No fa riferimento alla variabile di sessione in cui devi mettere il grado presente nel db.
Va bene il controllo se hai anche l'altro su $_SESSION['auth'].
 

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
Ok! cmq ancora non funziona ç_ç
e sono in questa situazione..

PHP:
 <?php
session_start();

 if(!isset ($_SESSION['auth'] )) {
	 echo "effettua il login per accedere";
	
	if(isset ($_SESSION['grado']) && $_SESSION['grado'] == "member" ) {

             echo "non hai i privilegi per accedere";

    }  
 }

Ti confermo che nel database ho il campo grado con la voce member..
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
All'atto dell'autenticazione e quindi nella pagina di login devi settare la variabile di sessione $_SESSION['grado'] attribuendo il valore del campo grado della tabella nel db.
 

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
ok ti ringrazio molto per la pazienza :)

ho provato ad interpretare quello che mi hai detto e ho fatto una query per estrarre il valore del campo grado per poi memorizzarla in $session['grado']
Funziona correttamente infatti stampandola a video si vedono tutti i gradi però deve esserci qualcosa che manca per far riconoscere l'associazione

if(isset ($_SESSION['grado']) && $_SESSION['grado'] == "member" ) {


PHP:
         $query_grado = mysql_query("SELECT * FROM users")or die(mysql_error()); 
    	 if(mysql_num_rows($query_grado)>0){ 
         while ($rows = mysql_fetch_array($query_grado)) { 		
			$livello = $rows['grado'];
			$_SESSION['grado']=$livello;
			}
        }

pagina completa login.php

PHP:
session_start();
	
	
	/*if(session_is_registered('Logged'))*/ 
	if (isset($_SESSION['auth']))  {
		
			header("location: backend.php");
	
	} else {
	
	

			if(!isset($_POST['submit'])) { 
		echo '<div id="box-login"> 
				<form method="post" action="#" id="accesso_utenti">
					<h3>Accesso Admin</h3>
					<div id="user"><span> Username </span><input type="text" name="username"> <br /></div>
					<div id="pass"><span> Password</span> <input type="password" name="pass"> <br /></div>
					<input type="submit" value="Entra" name="submit" id="bottone">
				</form>
			</div>';
	}
	else { 
		include 'config.php';
		include 'connect.php';
		$user = mysql_real_escape_string($_POST['username']); 
		$pass = mysql_real_escape_string($_POST['pass']);
		
		 $query_grado = mysql_query("SELECT * FROM users")or die(mysql_error()); 
    	 if(mysql_num_rows($query_grado)>0){ 
         while ($rows = mysql_fetch_array($query_grado)) { 		
			$livello = $rows['grado'];
			$_SESSION['grado']=$livello;
			}
        }
	
		
		$query = sprintf("SELECT * FROM users WHERE username  = '" .$user ."' AND pass= '" .sha1($pass)."'");
		$result = mysql_query ($query, $conn) or die("Errore nella query");
		$num_rows = mysql_num_rows($result);
		
	
		if ($num_rows == '1') {

			header("location:" . $path."/admin/backend.php");
			$_SESSION['auth']=$user;
			
			
			/*session_register("Logged");*/
			
			
}
		else {
			
			echo '<div class="benvenuto"> 
					<p>Dati errati: </p> 
					<a href="index.php">Ritenta</a>
				 </div>';
		}
		
		
	}
	
	}


?>

pagina backend.php

PHP:
session_start();


 if(!isset ($_SESSION['auth'] )) {
	 echo "effettua il login per accedere";
	
	if(isset ($_SESSION['grado']) && $_SESSION['grado'] == "member" ) {

             echo "non hai i privilegi per accedere";

    }   
 }
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Quale associazione?
Prova a stampare il valore della sessione e vediamo cosa c'è.
 

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
ecco qua
questo script stampa "admin member" perchè ho due utenti (un admin e un member)
PHP:
$query_grado = mysql_query("SELECT * FROM users")or die(mysql_error()); 
         if(mysql_num_rows($query_grado)>0){ 
         while ($rows = mysql_fetch_array($query_grado)) {         
            $livello = $rows['grado'];
            $_SESSION['grado']=$livello;
            echo $_SESSION['grado']
            }
        }

Per associazione intendevo che nonostante questo assegnamento dopo aver estratto il valore dal DB, non viene accettato

PHP:
if(isset ($_SESSION['grado']) && $_SESSION['grado'] == "member" ) {
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Sicuro che accedi con il grado member?
Prova a stampare il valore della sessione nella pagina dove fai il controllo che non va.
 

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
si sono sicuro!
come puoi vedere ho stampato il valore della sessione echo $_SESSION['grado']; nella pagina backend.php

in quella posizione mi stampa sempre member

PHP:
 <?php
session_start();


 if(!isset ($_SESSION['auth'] )) {
	 echo "effettua il login per accedere";
	
	if(isset ($_SESSION['grado']) && $_SESSION['grado'] == "member" ) {

             echo "non hai i privilegi per accedere";

    }   
 } 

 else
		{
			 
		echo $_SESSION['grado'];
			
		include 'config.php';
		include 'connect.php';
		
		
		 $query_grado = mysql_query("SELECT * FROM users")or die(mysql_error()); 
    	 if(mysql_num_rows($query_grado)>0){ 
         while ($rows = mysql_fetch_array($query_grado)) { 		
			$livello = $rows['grado'];
			$_SESSION['grado']=$livello;
			
			}
        }
			echo '<div class="benvenuto">
			
					<p>
						Benvenuto ' .$_SESSION['auth'].'! sei collegato al pannello di amministrazione. <br/>
						scegli quale pagina vuoi gestire! 
					</p> 
					
					<p> <a href="logout.php">Logout</a> </p>
					
						<a target="_blank" href="../index.php">torna al sito</a>
				 </div>';			
		
		?>
		
		Sono abilitato a vedere il contenuto
		
		<?php } ?>
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Fai delle prove per vedere dove è l'intoppo.
Puoi provare a dividere la condizione isset da quella =="member" per vedere quale blocca.
 
Discussioni simili
Autore Titolo Forum Risposte Data
B [MySQL] PRIVILEGI UTENTE MySQL 0
L DML: utente con permessi di UPDATE con WHERE ha bisogno di privilegi di SELECT? PHP 1
filippino Privilegi per procedure in PhpMyAdmin? MySQL 0
M Login e privilegi Classic ASP 0
tekinside Parere di altri utenti Webdesign e Grafica 1
I visualizzare lista utenti registrati PHP 1
otto9due Proteggere file caricati dall'esterno ma renderli accessibili per gli utenti loggati. PHP 4
L Sessione e array per utenti PHP 0
T Modificare ruolo utenti in fase di registrazione E-Commerce 0
C Saluti a tutti gli utenti del Forum Presentati al Forum 0
M Cerco profilo instagram (Utenti reali) Altri Annunci 1
F [PHP] Reindirizzare utenti alla propria area personale PHP 1
M [PHP] Come gestire gli utenti online PHP 9
F Posizionamento google 1# + nuovi utenti organici. Annunci servizi di Social Media Marketing 0
B Acquisto Gruppo facebook almeno 500 utenti iscritti Annunci servizi di Social Media Marketing 4
L Vendo Gruppo Facebook con 18MILA utenti attivi Annunci servizi di Social Media Marketing 0
borgo italia attenzione utenti aruba Discussioni Varie 0
S [COMPRO] Pagina Instagram con utenti attivi e italiani Annunci servizi di Social Media Marketing 0
A Vendo gruppi con più di 70K utenti italiani a solo 100 euro Annunci servizi di Social Media Marketing 0
borgo italia avviso agli utenti Aruba Discussioni Varie 0
P [Vendo] incremento gruppi fb, fino a 10'000 utenti per singolo gruppo Annunci servizi di Social Media Marketing 0
lxella [PHP] Aree riservate e gestione utenti PHP 1
Y Ciao a tutti gli utenti Presentati al Forum 0
trattorino [PHP] Scaricare solo utenti online o di un determinato tempo PHP 4
B Un saluto a tutti gli utenti del forum Presentati al Forum 2
trattorino [PHP] Scaricare utenti che hanno due tabelle con dati uguali PHP 15
trattorino [PHP] Scaricare utenti che hanno due tabelle con dati uguali PHP 0
M Un saluto a tutti gli utenti del forum Presentati al Forum 1
alexmalons [VENDO] Gruppo Facebook con 39.000 utenti attivo e funzionante Annunci servizi di Social Media Marketing 1
Laskot [Javascript] Registrazione e salvataggio utenti in LocalStorage Javascript 8
N CMS Vendite on line con utenti Programmazione 1
bubino8 [PHP] Controllo Log e Modifiche Utenti PHP 5
Spazio12 Vendo pagina facebook politica con utenti italiani da 3500 Annunci servizi di Social Media Marketing 6
Mirco P. Compro pagina fb da 50K utenti Annunci servizi di Social Media Marketing 4
G Vendo Pagina FB di 35.000 utenti a 200 euro Annunci servizi di Social Media Marketing 11
G Vendo gruppo facebook con 1100 utenti circa Annunci servizi di Social Media Marketing 0
I [COMPRO] pagine dai 1000 ai 5000 like, utenti reali, preferenza target femminile Annunci servizi di Social Media Marketing 8
angelo85 Sito joomla che permetta agli utenti di inviare mail Joomla 2
emanuele.social [VENDO] Incremento Utenti Facebook ITALIANI 100% , Costo onesto Annunci servizi di Social Media Marketing 1
adri1234 [COMPRO] Pagine Facebook anche pochi utenti Annunci servizi di Social Media Marketing 9
gianpav [COMPRO] Pagine facebook anche pochi utenti Annunci servizi di Social Media Marketing 12
StatoItaliano Scambio o vendo pagina Facebook con 9300 "Mi piace" di utenti di Napoli e provincia Annunci servizi di Social Media Marketing 0
StatoItaliano Vendo pagina Facebook con 9300 Like e con utenti di Napoli e provincia Annunci servizi di Social Media Marketing 0
R vendo pagina facebook con circa 124000 utenti attivi Annunci servizi di Social Media Marketing 8
adri1234 [VENDO] Gruppo Facebook con oltre 10.000 utenti Annunci servizi di Social Media Marketing 0
adri1234 [VENDO] gruppo Facebook di oltre 38.000 utenti Annunci servizi di Social Media Marketing 2
S [PHP] Maps e utenti PHP 0
S Vecchio articolo registrazione utenti, errore MySQL PHP 2
F punteggio utenti PHP 2
Recover database consultabile solo da utenti registrati WordPress 2

Discussioni simili