Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Utenti con privilegi

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    218

    Utenti con privilegi

    Ciao a tutti, studio e programmo da poco tempo in php e dopo aver creato un sistema semplice di Login con sessioni, sono arrivato davanti ad un muro: i privilegi.

    Mi interessava soltanto creare un gruppo "admin" i quali hanno accesso a dei pannelli non accessibili da altri.

    Ho creato così nel db nella tabella Utenti assieme a User e Pass una riga Admin, settandola ad 1.

    Il problema è che mi sono perso :-)

    Non so proprio come estrapolare dal db questo valore per autenticare gli utenti a certe pagine. Di seguito lo script utilizzato:

    #login.php
    Codice PHP:
    <?php //inizio la sessione session_start (); //includo variabili per la connessione al database mysql include ("config.inc.php"); //dati ricavati dal form login $user = $_POST['user']; $pass= $_POST['pass'];- //mi collego a mysql $connessione = mysql_connect($db_host, $db_user, $db_pass)     or die ("Errore nella connessione a mysql"); //controllo la connessione al db mysql_select_db($db_name, $connessione)     or die ("Errore  nella connessione al database"); //seleziono e confronto con il database l'user e la pass del form login $query = "SELECT * FROM utenti WHERE user = '$user' AND pass = '$pass'"; $result = mysql_query($query); $autorizzato=mysql_fetch_array($result); if ($autorizzato == 1)  //crea la sessione se i dati sono corretti {      $_SESSION["valid_user"] = $_POST["user"];     $_SESSION["valid_pass"] = $_POST["pass"];     $_SESSION["valid_time"] = time();   //sessione creata. Vai alla pagina dopo il login    header("Location: dopologin.php"); }   else //altrimenti fallisce   {     header ("Location: index.php");   }   ?>

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    218
    <?php
    //inizio la sessione
    session_start ();
    //includo variabili per la connessione al database mysql
    include ("config.inc.php");
    //dati ricavati dal form login
    $user = $_POST['user'];
    $pass= $_POST['pass'];-
    //mi collego a mysql
    $connessione = mysql_connect($db_host, $db_user, $db_pass)
    or die ("Errore nella connessione a mysql");
    //controllo la connessione al db
    mysql_select_db($db_name, $connessione)
    or die ("Errore nella connessione al database");
    //seleziono e confronto con il database l'user e la pass del form login
    $query = "SELECT * FROM utenti WHERE user = '$user' AND pass = '$pass'";
    $result = mysql_query($query);
    $autorizzato=mysql_fetch_array($result);
    if ($autorizzato == 1)
    //crea la sessione se i dati sono corretti
    {
    $_SESSION["valid_user"] = $_POST["user"];
    $_SESSION["valid_pass"] = $_POST["pass"];
    $_SESSION["valid_time"] = time();

    //sessione creata. Vai alla pagina dopo il login

    header("Location: dopologin.php");
    }
    else //altrimenti fallisce
    {
    header ("Location: index.php");
    }


    ?>

    Lo metto così che nell'altra maniera non si capisce nulla..

  3. #3
    La variabile $autorizzato non conterrà mai un valore di tipo numerico, in quanto contiene il risultato del fetching, per cui contiene un array.

    Te puoi scrivere semplicemente:
    Codice PHP:
    // fin qui il tuo codice sembra andare bene

    $result mysql_query($query);

    if (
    $result) {
         
    // la query ha estratto un valore 
         
    echo "Accesso effettuato";
         
    // resto del codice
    } else {
         
    // la query non ha estratto alcunché
         
    echo "Accesso non permesso";

    Prova se così funziona.... poi magari tenta anche di implementare un minimo di controlli sugli input al fine di rendere questo tuo script di login un minimo sicuro!

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    218
    Lo script per il login funziona come l'ho scritto io :P

    anzi, uso mysql_fetch_rows al posto di array. Ma funziona.

    Il mio problema era invece quello di riconoscere quando un utente è o no admin.

    Ho creato una riga nella tabella utenti "admin", quando un utente in quel campo ha il valore "1" ha i permessi per certe pagine, altrimenti no.

    Solo che non ho idea di come estrapolare quell'1.

    Devo scrivere in ogni pagina che intendo proteggere una query?

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    218
    Edit: errore doppio post

  6. #6
    :master:
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  7. #7
    Mi sembra di avere capito quindi che hai un campo nella tabella utenti che indica una sorta di livello che quell'utente ha nel sito.

    Ergo devi estrapolarlo così (riprendo il mio script che formalmente è più corretto):

    Codice PHP:
    $result mysql_query($query); 

    if (
    $result) { 
         
    // la query ha estratto un valore 
         
    $rigo mysql_fetch_array($result);
         
    $valore1 =  $rigo['campo1'];
         
    $valore2 =  $rigo['campo2'];
         
    // eccetera
         
    $livello_utente =  $rigo['campo_dove_è_salvato_il_livello_utente'];

          if (
    $livello_utente == 1) {
             
    /* amministratore
             * qui metti tutto il codice
             * che serve per definire le funzioni ADMIN
             */
          
    } else {
             
    /* utente normale
             * qui metti tutto il codice
             * che serve per definire le funzioni BASE
             */
          
    }


    } else { 
         
    // la query non ha estratto alcunché 
         
    echo "Accesso non permesso"

    Spero di essere stato chiaro.
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

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.