Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    13

    If in base a contenuto sessione

    Ciao a tutti!
    Sono un po' confuso in merito all'utilizzo delle sessioni, finora studiarci un po' sopra non mi ha aiutato, ho pochissimo tempo per fare una cosa e mi chiedevo se qualcuno potesse aiutarmi.

    Ho la solita pagina login ed una volta inserito user e password corretta vorrei che, se l'utente ad entrare fosse l'amminstratore, il login portasse ad una determinata pagina, altrimenti (un qualsiasi altro utente) ad un'altra.

    Ho già il login quasi integralmente fatto, ma la mia confusione in merito all'inserimento dati nella sessione mi porta a non capire come proseguire:

    Codice PHP:
    <?
    //qui connessione db
      
    if($_POST) {     
    effettua_login(); 
    } else {     
    mostra_form(); 
    }  
    function 
    mostra_form() {     
         

    if(isset(
    $_GET['msg'])) {         
    echo 
    '[b]'.htmlentities($_GET['msg']).'[/b]

    '
    ;     
    }     
    ?>     
    <form name="form_login" method="post" action="">         
    <label>utente: <input name="nome" type="text" value="" /></label>
             <label>password: <input name="password" type="password" value="" /></label>
            
     <input name="invia" type="submit" value="Invia" />     </form>     
    <? 
    }  

    function 
    effettua_login()
     {     
    $nome      trim($_POST['nome']);     
    $password  trim($_POST['password']); 

    if(
    get_magic_quotes_gpc()) {         
    $nome      stripslashes($nome);         
    $password  stripslashes($password);     
    }          
    if(!
    $nome || !$password) {         
    $messaggio urlencode("Non hai inserito il nome o la password"); 
    header("location: $_SERVER[PHP_SELF]?msg=$messaggio");         
    exit; 
        }     
    $nome     mysql_real_escape_string($nome);     
    $password mysql_real_escape_string($password);          
    $query "SELECT userid FROM utenti WHERE user = '$nome' AND pswd = MD5('$password')";     
    $result mysql_query($query);     
    if (!
    $result) {         
    die(
    "Errore nella query $query: " mysql_error());     
    }      
    $record mysql_fetch_array($result);      
    if(!
    $record) {         
    $messaggio urlencode('Nome utente o password errati');         
    header("location: $_SERVER[PHP_SELF]?msg=$messaggio");     
    } else {         
    session_start();         
    // QUI SUPPONGO DI DOVER INSERIRE IL TUTTO, MA COSA DI PRECISO?    
    }
    }
     
    ?>
    Vi ringrazio tantissimo in anticipo per l'eventuale aiuto!

  2. #2
    per rendere il tutto più semplice,in una tabella utenti nel database potresti usare un campo che valga solo 1 oppure 0 chiamato admin : se 1 allora quell'utente è admin altrimenti è guest, utente normale. Perciò basta che una volta immesso l'utente fai una query del tipo

    $query = "SELECT * FROM utenti WHERE nickname='" . $_POST['nickname'] . "'";

    se lo trova controlla il campo admin:

    Codice PHP:
    if ($record['admin'] == 1) {
      
    $_SESSION['diritti_utente'] = $record['nickname'] . "*1";
      
    header("Location: areaAdmin.php");
    } else {
          
    $_SESSION['diritti_utente'] = $record['nickname'] . "*0";
          
    header("Location: paginaNormale.php");

    in questo modo usando la variabile $_SESSION saprai sempre, dovunque sei nel sito, dove andare a seconda se l'utente è admin oppure no.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    13
    Per "nickname" intendi tipo il mio "user" giusto? O devo aggiungere un altro campo oltre all'admin?

    Ma quindi se io volessi, senza aggiungere un campo admin, dire che se l'userid (il campo chiave primaria di utente) è per esempio 22 (numero a caso, comunque intendo il valore userid dell'admin) vai in una pagina altrimenti in un altra dovrei mettere dopo il session start:

    Codice PHP:
    $query "SELECT * FROM utenti WHERE user='" $_POST['userid'] . "'";    
    if (
    $record['userid'] == 22) {   
    $_SESSION['diritti_utente'] = $record['userid'] . "*1";   
    header("Location: areaAdmin.php"); } else {       
    $_SESSION['diritti_utente'] = $record['userid'] . "*0";       
    header("Location: paginaNormale.php"); 

    Sbaglio qualcosa?

  4. #4
    dirie di no! da quando definisci la variabile $_SESSION la puoi utilzizare dovunque nel sito, in qualunque pagina e quindi sapere se quell'utente ha i diritti di admin o per fare certe cose...devi sempre solo controllare sec'è il valore 1 o 0 e poi reindirizzarlo a seconda del suo valore. Per facilitare il tutto potresti fare così dovunque vuoi sapere se l'utente è admin o no:

    Codice PHP:
    $user $_SESSION['diritti_utente'];
    $array explode('*'$user);
    if (
    $array[1] == 1)
      
    //l'utente è admin
    else
      
    // l'utente non è admin 
    con la funzione explode creo un array per dividere in due la variabile, suddivisa quando incontra il *: in questo caso se hai una session con contenuto "Giovanni*1":

    $array[0] = "Giovanni";
    $array[1] = "1";

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    13
    Perfetto, va tutto! Non che avessi dubbi. Ti ringrazio davvero molto concittadino!

  6. #6
    anche tu sei de zena? compliments!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.