Ruoli utenti - problema

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
Salve, io ho questo codice e non so il motivo perché entra anche l'utente semplice..
il simbolo || non è OR? Se non ricordo male.. perché non riesco ad far che entra solo l'1 e il 2 che sarebberono Admin e Moderatore..
invece entra anche il 3.. che sarebbe l'utente..

come mai?

Vi posto il codice:
PHP:
<?php
session_start();
require_once(dirname(__FILE__) . '/../include.php'); 
if(isset($_SESSION["user_level"]) == 1 || isset($_SESSION["user_level"]) == 2 )
{
}
else
{
$login_msg = "Non hai acceso ad accedere in questa area";
}
 if(isset($login_error)){ echo $login_error;}
if(isset($login_msg)){ echo $login_msg;} else {
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <title></title>
    <link href="style.css" rel="stylesheet" type="text/css" />
<body>
 <div id='page'>
      <div id='header'>
        <div id='site-title'><a href="index.php"></a></div>
        <div id='site-subtitle'>Amministratore</div>
	<div id='navigation'>
		<a href="index.php">Home</a> 
		<span class="separator"> | </span> 		
		<a href="index.php?m=news">News</a>
		<span class="separator"> | </span> 		
		<a href="index.php?m=pagine">Pagine</a>
		<span class="separator"> | </span> 		
		<a href="index.php?m=articoli"> Articoli</a>
		<span class="separator"> | </span> 
		<a href="index.php?m=utenti">Utenti</a>
     <span class="separator"> | </span> 
		<a href="logout.php">Esci</a></div>
	 </div>
      <hr class='hidden' />
      <div id='main'>
        <div id='content'>
<?php require_once(dirname(__FILE__) . '/module.php');?>
</div>
      <hr class='hidden' />
      <div id='footer' align="center">
	  &copy; 2012 - v1.5 :: Luigi  ::
         </div>
    </div>
</body>
</html>
<?php } ?>

Grazie mille.
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
ciao
ho aggiunto il tag head e chiuso un div rimasto aperto

cmq la condizione sembra giusta

prova cosi dichiarando prima $login_msg come stringa vuota e poi verificandolo

PHP:
<?php
session_start();
require_once(dirname(__FILE__) . '/../include.php');
$login_msg = "";
if (isset($_SESSION["user_level"]) == 1 || isset($_SESSION["user_level"]) == 2) {
    
} else {
    $login_msg = "Non hai acceso ad accedere in questa area";
}
if (isset($login_error)) {
    echo $login_error;
}
if ($login_msg != "") {
    echo $login_msg;
} else {
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <title></title>
            <link href="style.css" rel="stylesheet" type="text/css" />
        </head>
        <body>
            <div id='page'>
                <div id='header'>
                    <div id='site-title'><a href="index.php"></a></div>
                    <div id='site-subtitle'>Amministratore</div>
                    <div id='navigation'>
                        <a href="index.php">Home</a> 
                        <span class="separator"> | </span>         
                        <a href="index.php?m=news">News</a>
                        <span class="separator"> | </span>         
                        <a href="index.php?m=pagine">Pagine</a>
                        <span class="separator"> | </span>         
                        <a href="index.php?m=articoli"> Articoli</a>
                        <span class="separator"> | </span> 
                        <a href="index.php?m=utenti">Utenti</a>
                        <span class="separator"> | </span> 
                        <a href="logout.php">Esci</a></div>
                </div>
                <hr class='hidden' />
                <div id='main'>
                    <div id='content'>
                        <?php require_once(dirname(__FILE__) . '/module.php'); ?>
                    </div>
                    <hr class='hidden' />
                    <div id='footer' align="center">
                        &copy; 2012 - v1.5 :: Luigi  ::
                    </div>
                </div>
            </div>
        </body>
    </html>
<?php } ?>
 
Ultima modifica:

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Prova a riscriverlo così:
PHP:
<?php
session_start();

// tolta inutile chiamata a dirname()
require_once __DIR__ . '/../include.php'; 

// qui usavi isset() che sarà sempre TRUE, dunque permetteva l'accesso a tutti
// inoltre usiamo in_array() con controllo di uguaglianza di tipo strict (===)
if (!isset($_SESSION['user_level']) || !in_array($_SESSION['user_level'], array(1, 2), true)) {
    // inviamo l'apposito header HTTP
    header('HTTP/1.0 403 Forbidden');

    // terminiamo l'esecuzione dello script, inutile settare la variabile per visualizzarla oltre
    die('Non hai acceso ad accedere in questa area');
}
?>
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
Prova a riscriverlo così:
PHP:
<?php
session_start();

// tolta inutile chiamata a dirname()
require_once __DIR__ . '/../include.php'; 

// qui usavi isset() che sarà sempre TRUE, dunque permetteva l'accesso a tutti
// inoltre usiamo in_array() con controllo di uguaglianza di tipo strict (===)
if (!isset($_SESSION['user_level']) || !in_array($_SESSION['user_level'], array(1, 2), true)) {
    // inviamo l'apposito header HTTP
    header('HTTP/1.0 403 Forbidden');

    // terminiamo l'esecuzione dello script, inutile settare la variabile per visualizzarla oltre
    die('Non hai acceso ad accedere in questa area');
}
?>

ora in questo modo non entro nessun con tre gli utenti che ho nel db .. e non entro nemmeno con l'amministratore e moderatore..
come mai?

grazie mille.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
eccolo .. ma non è possibile...:

Codice:
Notice: Undefined index: user_level in D:\xampp\htdocs\3\admin\index.php on line 6
NULL Non hai acceso ad accedere in questa area

che dice?
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
Ah, accade proprio perché il valore viene salvato in sessione come stringa. Fai così:
PHP:
if (!isset($_SESSION['user_level']) || !in_array((int)$_SESSION['user_level'], array(1, 2), true)) {

grazie mille con questa abbiamo risolto...

ora ti chiedevo una cosa se devo aggiungere altri ruoli .. basta che metto array(1,2,3,4) ??

giusto??

ti ringrazio molto.. buona serata .. ora mi sento un pò di musica...

a domani..
saluti.luigi.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
Sì, giusto. Anche se alla lunga così diventa piuttosto complicato. Dovresti usare una libreria esterna (es. il componente Security del Web framework Symfony2).

ok, ma tanto ne uso solo 3 di ruoli per questo che devo fare...

volevo sapere mi dici come fare se l'utente semplice gli dice di ritornare indietro e o di fare logout?..

in poche parole di far venire i messaggi alla tipologia di utente..

Perchè ora blocca la pagina dicendo che "non hai acesso ad questa area"..
ma per far venire i messaggi diversi?

grazie mille.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ciao, lo devo mettere dentro al'if questo:
if (!isset($_SESSION['user_level']) || !in_array((int)$_SESSION['user_level'], array(1, 2), true)) {

qui:
}

dimmi se va bene e poi ci sentiamo verso sera..che devo andare via..
buona giornata.

grazie mille.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
Sì, esattamente.

ciao, ancora ultimo piccolo problema..

il problema è che quando non è stato fatto nessun acesso .. lo script da cosi:
PHP:
Notice: Undefined index: user_level in D:\xampp\htdocs\4\admin\index.php on line 11
Non hai acceso ad accedere in questa area.. fai i login Login

e nella linea 11 c'è questo:
PHP:
	switch ($_SESSION['user_level']) {
    case 1:
        // messaggio per ruolo 1
        break;
    case 2:
        // messaggio per ruolo 2
		break;

    default:
etc..

segnala non definita la variabile dello Switch come posso rimediare ?

un'altra cosa come posso mettere un login = true per dire che è loggato o no oltre ai livelli degli ruoli:?
PHP:
if (!isset($_SESSION['user_level']) || !in_array((int)$_SESSION['user_level'], array(1, 2), true)) {

grazie mille.
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Aggiungi questo subito prima dello switch:
PHP:
$level = isset($_SESSION['user_level']) ? (int)$_SESSION['user_level'] : false;
E modifica lo switch in modo che sfrutti questa nuova variabile:
PHP:
switch ($level) {
Il controllo sul login viene già fatto controllando se la variabile di sessione user_level esiste.
Se vuoi che venga visualizzato un messaggio personalizzato per gli utenti non loggati puoi metterlo in case false.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
Aggiungi questo subito prima dello switch:
PHP:
$level = isset($_SESSION['user_level']) ? (int)$_SESSION['user_level'] : false;
E modifica lo switch in modo che sfrutti questa nuova variabile:
PHP:
switch ($level) {
Il controllo sul login viene già fatto controllando se la variabile di sessione user_level esiste.
Se vuoi che venga visualizzato un messaggio personalizzato per gli utenti non loggati puoi metterlo in case false.
grazie mille... per i login come si fa a mettero con case false senza modificare il codice sopra?

mi protesti scrivere il codice .. grazie mille.

ti ringrazio molto..

buona serata.
 
Discussioni simili
Autore Titolo Forum Risposte Data
renoir09 ruoli e gruppi sito wordpress WordPress 0
L funzione per ruoli.. PHP 11
L Sessioni e ruoli di utenza PHP 4
tekinside Parere di altri utenti Webdesign e Grafica 0
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
P Importa e esporta tabella utenti MySQL 6

Discussioni simili