Ruoli utenti - problema

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ancora un problema ....

perché ricevo un pagina bianca invece di stampare i vari messaggi ai vari ruoli?

La pagina che sta in index.php con array 1,2 funziona normale e solo questa pagina nuova che dovrebbe essere vista dalla parte degli utenti registrati etc..

questo è il var_dump: string(1) "3"
ti incollo il codice:
PHP:
<?php
session_start();
// 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((int)$_SESSION['user_level'], array(1, 2, 3), true)) {  
  
	$level = isset($_SESSION['user_level']) ? (int)$_SESSION['user_level'] : false;  
	
	
	switch ($level) {  
    case 1:
        // messaggio per ruolo 1
		$login_msg = "Salve, Admin andare nella pagina dove inserire qualcosa <a href=\"admin\">entra</a>";

        break;
    case 2:
        // messaggio per ruolo 2
		$login_msg = "Salve, Moderatore poi andare nella pagina dove inserire qualcosa <a href=\"admin\">entra</a>";
		break; 
    case 3:
        $login_msg = "Salve, utente poi andare nella pagina guestbook";
		break;


   case false:
         $login_msg = "Non hai acceso ad accedere in questa area.. fai i login <a href=\"login.php\">Login</a>";
        break;
	}  
}

if(isset($login_error)){ echo $login_error;}
if(isset($login_msg)){ echo $login_msg;} else {

}
?>

come mai??

la login_msg .. fa sparire tutto e scrive i messaggi dei ruoli..

ma mi da pagina bianca.. e non so come mai..

idee?

grazie mille.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
Ma scusa, io non capisco dove valorizzi la variabile $login_error?
E perché non usi un die() come ho fatto io, che è molto più semplice?

ciao la login_error serve per quando voglio stampare l'errore sopra ad ogni cosa..
invece la login_msg .. stampa al posto dove c'è le cose.. (funziona all'incotraio della login_error),

comunque è vero che basta che levo il !in_array e metto in_array? levo il questo simbolo: !

e giusto?

grazie mille.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
scusa... ma perché die mi sembra che taglia la parte in basso del mio cms..ecco perché stampo le variabile ..

grazie mille.

aspetto risposta.
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Se togli il punto esclamativo davanti a in_array l'errore verrà (teoricamente) mostrato agli utenti autorizzati, e non credo sia quello che stai cercando.
Inoltre non ho ben capito qual è il tuo problema attuale. Puoi rispiegare cercando di essere più chiaro?
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ciao, il probelama e quello che non facceva apparire i messaggi ai diversi ruoli degli utenti..

ma apre una pagina bianca..senza dare dei messagi..ai ruoli diversi.

come mai?

grazie mille.
aspetto risposta.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
Vuol dire che il ruolo non è né 1, né 2, né 3, né false... Strano. Prova ad aggiungere:
PHP:
$level = isset($_SESSION['user_level']) ? (int)$_SESSION['user_level'] : false;
var_dump($level);

ho fatto ... ma pagina bianca..e non mi da nemmeno il vardump. e nenanche nel sorgente html..

però ho notato se toglio il simbolo ! .. allora fa i messaggi a modo..

come mai?

ma questo ! che significato ha?

perché se lo levo funziona e se lo metto da pagina bianca.

come mai?
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
È strano, questa condizione:
PHP:
if (!isset($_SESSION['user_level']) || !in_array((int)$_SESSION['user_level'], array(1, 2, 3), true)) {
Va letta come segue:
Se la variabile di sessione user_level non è settata, o il suo valore convertito ad intero non fa parte dell'array (1, 2, 3), allora esegui le seguenti istruzioni.
Non è questo quello che devi ottenere?
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ciao, ho notato anche cosi.. la condizione funziona:
PHP:
if (!isset($_SESSION['user_level']) || !in_array((int)$_SESSION['user_level'],array(0), true)) {

quindi ??

Scusa, ma non ci capisco più nulla.

in poche parole devo fare entrare tutti gli utenti registrati e verificare chi è l'amministratore e moderatore e l'utente semplice..
tutto qui..

ma non ci sto capendo più nulla...

mi dici come fare?

grazie mille.
buona serata.
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Stai confondendo anche me... Comunque, prova in quest'altro modo: crea un file in cui inserirai questa funzione:
PHP:
function getRoleMessage()
{
    if (!isset($_SESSION)) {
        session_start();
    }
    
    if (!isset($_SESSION['user_level'])) {
        $message = 'Devi effettuare il login.';
    }

    switch ((int)$_SESSION['user_level']) {
        case 1:
            // il ruolo è 1
            break;

        case 2:
            // il ruolo è 2
            break;

        case 3:
            // il ruolo è 3
            break;

        default:
            // il ruolo non è né 1, né 2, né 3
    }

    return isset($message) ? $message : true;
}
Quindi includi il file dove ti serve e usa così la funzione:
PHP:
$login_msg = getRoleMessage();

if ($login_msg !== true) {
    echo $login_msg;
} else {
    // ...
}
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ok, ora cosi funziona solo che quando non c'è la sessione da un messaggio che non è definita la variabile che sta qui:
PHP:
  switch ((int)$_SESSION['user_level']) {

mi dici come rimediare questo notice.?


ti ringrazio ...molto
buona serata.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
Stai confondendo anche me... Comunque, prova in quest'altro modo: crea un file in cui inserirai questa funzione:
PHP:
function getRoleMessage()
{
    if (!isset($_SESSION)) {
        session_start();
    }
    
    if (!isset($_SESSION['user_level'])) {
        $message = 'Devi effettuare il login.';
    }

    switch ((int)$_SESSION['user_level']) {
        case 1:
            // il ruolo è 1
            break;

        case 2:
            // il ruolo è 2
            break;

        case 3:
            // il ruolo è 3
            break;

        default:
            // il ruolo non è né 1, né 2, né 3
    }

    return isset($message) ? $message : true;
}
Quindi includi il file dove ti serve e usa così la funzione:
PHP:
$login_msg = getRoleMessage();

if ($login_msg !== true) {
    echo $login_msg;
} else {
    // ...
}

scusa, molto ma lo devo mettere sotto ad quello che abbiamo già scritto :
cosi:
PHP:
<?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((int)$_SESSION['user_level'], array(1,2,3), true)) {  
	
	
	 
}

$login_msg = getRoleMessage();

if ($login_msg !== true) {
    echo $login_msg;
} else {
    // ...
}  
?>

grazie mille. però cosi funziona e stampa i messaggi..

dimmi se va bene.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
booooooo.. io non sto capendo più nulla....

riformuliamo la domanda..

devo fare un area riservata e qui ok... e la parte admin l'abbiamo risolta...ed entrano solo ruolo 1 e ruolo 2..

ma non bastava aggiungere all'array il numero 3 ,

invece di fare questo mega casino?

fermiamoci un'attimo e poi ragiono come fare.. e ne riparliamo quando ho le idee chiare..

ma io dico non bastava fare solo 1,2,3 ? come devono essere?

vedi pagina: del simbolo:
http://www.allwebfree.it/php_operatori.php#operatorilogici

quindi?

grazie mille.
buona serata.
 
Ultima modifica:

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Dunque, una cosa per volta. L'errore nella funzione lo puoi correggere così:
PHP:
if (!isset($_SESSION['user_level'])) { 
    return 'Devi effettuare il login.'; 
}
L'if a questo punto lo puoi anche togliere.

Nell'array il numero 3 già c'è... non capisco.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ciao. mi è riuscito cosi:

code:
user.php
PHP:
<?php
session_start();
if (!isset($_SESSION['user_level']) || !in_array((int)$_SESSION['user_level'], array(1, 2,3), true)) {  
    
	echo "<h2>Non sei entrato fare i login</h2>";
	
} else
{
$login_msg = getRoleMessage();
    echo $login_msg;
	echo "<h2>Prova</h2>";
}
?>

tua funzione che ho dovuto tolgiere qualche pezzo di codice..

PHP:
function getRoleMessage()
{
   $level = isset($_SESSION['user_level']) ? (int)$_SESSION['user_level'] : false; 
	switch ($level) {
    //switch ((int)$_SESSION['user_level']) {
        case 1:
            // il ruolo è 1
			$message =  "Benvenuto amministrarore".$_SESSION["name"].", poi andare in <a href=\"admin\">Admin</a>";
            break;

        case 2:
            // il ruolo è 2
			$message =  "Benvenuto Moderatore".$_SESSION["name"].", poi andare in <a href=\"admin\">Admin</a>";
            break;

        case 3:
            // il ruolo è 3
			$message =  "Benvenuto utente: ".$_SESSION["name"]."";
            break;

        default:
            // il ruolo non è né 1, né 2, né 3
    }

    return isset($message) ? $message : true;
}

e cosi funziona.. e posso far apparire quello che è nascoto dagli utenti non registrati al sito..

e in più posso inseire altri ruoli nell'array e funziona.. al meno spero poi dimmi tu.

per ora cosi avendo solo 3 ruoli inseriti nell'archvio funziona tutto normalmente.. ho anche inserito un quarto ruolo nullo che non è chiamato da nessuna parte e
quello non entra da nessuna parte...perché il sistema ne vede solo 3..

e qui funziona al meno per me e per te non saprei se è cosi..

ti ringrazio mi poi controllare se ho scritto bene..?

grazie mille.
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