Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Aree private

  1. #1

    Aree private

    Ciao a tutti,

    ho realizzato uno script di accesso in php, in particolare gli utenti possono loggarsi tramite dei dati forniti dall'amministratore.
    Ora vorrei fare in modo di far accedere gli utenti ad un area "ristretta" che mette a disposizione solo un certo numero di funzioni, mentre quando accede l'admin viene mostrata un'area con tutte le funzioni e la gestione completa del programma.
    Qualche idea?
    ?

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,132
    Alla tabella login aggiungi il livello id|user|login|livello con livello 1 hai x opzioni con livello 2 hai y opzioni quando si esegue il login imposti il livello in una sessione
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Uhm, potrei anche anche agire sull'id visto che l'ho già implementato. Sisi bella idea! Grazie.
    ?

  4. #4
    Una sola cosa: come faccio a salvare l'id dell'utente che si è loggato nella sessione?
    ho necessità di salvarlo in $id così confronto il valore e se corrisponde a quello voluto lo collego ad una pagina, altrimenti ad un altra.
    ?

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,469
    Nello script di login, quando verifichi che esista l'accoppiata username/password esegui una query di questo tipo

    SELECT id FROM utenti WHERE username=... AND password=...

    Così se è giusta ti ritroverai l'id dell'utente, poi basterà metterlo in sessione con

    $_SESSION['id'] = .... quello che hai recuperato con la query.

  6. #6
    Io faccio così:

    codice:
    $result =  mysql_query("SELECT * FROM user WHERE username = '$username' AND password = '$pass' ")or die(mysql_error);
    è qui che devo mettere id?

    il controllo poi con:

    codice:
    if ($_SESSION['id'] == '1') 
    		   { 
    		   
               header("location: admin.php"); 
            
    		   }
    ?

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,469
    No, se metti * l'id già lo recuperi, però se gli altri campi non ti interessano è meglio mettere id invece che *, così ottimizzi un po' la query che ti restituisce solo ciò di cui hai bisogno risparmiando memoria.

    Dopo la query dovresti mettere

    $result = mysql_fetch_array($result);
    $_SESSION['id'] = $result['id'];

    in questo modo hai in sessione l'id dell'utente loggato

    Comunque io per decidere se uno è l'amministratore non mi baserei sull'id, ma aggiungerei alla tabella un campo "permesso" in cui inserire un numero o un codice che poi interpreterai tu, per esempio:
    25 identifica l'admin
    11 identifica l'utente normale

    meglio usare numeri "strani" per rendere difficili eventuali attacchi.

    Inoltre con questo sistema puoi avere diversi livelli di accesso, non solo 2, e puoi decidere di far passare da un livello all'altro i vari utenti.

  8. #8
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    No, se metti * l'id già lo recuperi, però se gli altri campi non ti interessano è meglio mettere id invece che *, così ottimizzi un po' la query che ti restituisce solo ciò di cui hai bisogno risparmiando memoria.

    Dopo la query dovresti mettere

    $result = mysql_fetch_array($result);
    $_SESSION['id'] = $result['id'];

    in questo modo hai in sessione l'id dell'utente loggato

    Comunque io per decidere se uno è l'amministratore non mi baserei sull'id, ma aggiungerei alla tabella un campo "permesso" in cui inserire un numero o un codice che poi interpreterai tu, per esempio:
    25 identifica l'admin
    11 identifica l'utente normale

    meglio usare numeri "strani" per rendere difficili eventuali attacchi.

    Inoltre con questo sistema puoi avere diversi livelli di accesso, non solo 2, e puoi decidere di far passare da un livello all'altro i vari utenti.
    Uhm vediamo se ho capito bene:

    codice:
    $result =  mysql_query("SELECT id FROM user WHERE username = '$username' AND password = '$pass' ")or die(mysql_error); 
    	   
    	    $count = mysql_num_rows($result); 
    		
    		$res = mysql_fetch_array($res);
    		$_SESSION['id'] = $res['id'];
    		
    		if($count == 1)
    		{
    		   
    		   $_SESSION['login'] = $username; 
    		   echo "Login eseguito con successo!";
    		   
    		   if ($_SESSION['id'] == '1') 
    		   { 
    		   
                       header("location: admin.php"); 
            
    		   } 
    		   else
    		   {
    		   
    		   header("location: index.php"); 
               
    		   }
    Il problema è che mi collega sempre su index.php pur avendo id = 1
    ?

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,469
    Intanto questo
    $_SESSION['id'] = $res['id'];

    va dentro a
    if($count == 1)

    altrimenti non ha senso, perché $res['id'] potrebbe non esistere se username e/o password sono sbagliate

    Poi per usare $_SESSION, all'inizio dello script devi metterci session_start() altrimenti non puoi usare la sessione, ce l'hai messa quella istruzione?
    Mi raccomando, va all'inizio, non deve esserci alcun output prima, altrimenti non funzionerà.

    E ancora, questo
    $res = mysql_fetch_array($res);

    deve essere
    $res = mysql_fetch_array($result);

  10. #10
    Sisi session start l'ho messa, ho incollato solo le parti di codice interessate.
    Comunque ho applicato le correzioni ed ora effettivamente funziona tutto, grazie molte sei stato gentilissimo

    Curiosità: se io invece volessi creare un altro campo nella tabella come hai fatto tu "permesso", quali sono le modifiche da adottare?
    ?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.