Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Problema con settaggio autorizzazioni

    questa è la pagina per visualizzare tutti gli utenti:
    Codice PHP:
    <?php

    include 'check.php';
    include 
    'header.php';
    include 
    'config.php';
    $query "select * from utenti where nome !='admin' order by nome;";
    $result mysql_query($query$link) or die(mysql_error($link));
    echo 
    '<table cellpadding="2" cellspacing="2" style="width: 70%; margin-left= auto; margin-right: auto;">';
    echo 
    '<thead>';
    echo 
    "<th>Nome</th>""<th>Email</th>""<th>Eta</td>""<th>Residenza</th>";
    echo 
    '</thead>';
    while (
    $riga mysql_fetch_assoc($result)) {
        echo 
    '<tr>';
        echo 
    '<td>' $riga['nome'] . '</td>';
        echo 
    '<td>' $riga['email'] . '</td>';
        echo 
    '<td>' $riga['eta'] . '</td>';
        echo 
    '<td>' $riga['residenza'] . '</td>';
        echo 
    '<td>[url="modifica_utenti.php?id=' $riga['id'] . '"]Modifica[/url]</td>';
        echo 
    '</tr>';
    }
    echo 
    '</table>';
    ?>
    per accedere alla pagina di modifica_utenti.php devi:
    -o essere admin
    -o essere quello specifico utente.
    cioè i dati di pippo possono essere modificati da admin e da pippo, nn da pluto.
    questo è il check che ho messo su modifica_utenti.php:
    Codice PHP:
    <?php

    session_start
    ();
    if (!isset(
    $_SESSION['autorizzato']) || $_SESSION['autorizzato'] != "admin" || mi manca il pezzo dell'utente) {
        echo "

    Solo l'
    utente o l'admin possono modificare i dati</p>";
        echo '
    [url="index.php"]Home[/url] | ';
        echo '
    [url="login.php"]Login[/url]';
        die;
    }
    ?>
    come faccio a fargli fare un riscontro tra l'utente che è loggato e quello che vuole modificare??

  2. #2
    Devi avere memorizzato in una sessione l'id dell'utente e poi fare il paragone con l'id dell'utente da modificare:
    Codice PHP:
    !isset($_SESSION['autorizzato']) || !($_SESSION['autorizzato'] != "admin" ||$_SESSION['id']!=$_GET['id']) 
    In ogni caso, se il tuo servizio non è lmitato a presone di cui ti fidi, ti consiglierei di migliorare un po' la sicurezza, infatti qualsiasi hacker o programmatore può utilizzare un qualsiasi programma per modificare le sessioni e, tanto per fare un esempio, fingersi l'amministratore inserendo una sessione autorizzato con valore "admin", oppure sostituirsi ad un utente inserendo un id a caso. Personalmente, per quasto tipo di servizi, preferisco inserire nele sessioni solo nome utente e password, e ripetere l'autentificazione ad ogni pagina, in modo che, anche se qualcuno fosse in grado di modificare le variabili di sessione, dovrebbe conoscere nome utente e password dell'utente/amministratore.
    Spero di esserti stato utile!

  3. #3
    ciao.
    nn funziona, perchè adesso tutti possono modificare i dati di tutti.

    cmq nn ti preoccupare è solo a scopo didattico mio.
    la sicurezza è una cosa in programma più in la.

  4. #4
    ho fatto altre prove ma ottengo sempre:
    -o che tutti possono modificare le impostazioni di tutti
    -o nessuno le può modificare
    qualche altro suggerimento??

  5. #5
    Prova così
    Codice PHP:
    !isset($_SESSION['autorizzato']) || !($_SESSION['autorizzato'] == "admin" ||$_SESSION['autorizzato']==$_GET['id']) 
    Ricorda che in questo caso nella sessione "autorizzato" devi inserire l'id dell'utente oppure la parola admin.

  6. #6
    Originariamente inviato da quit10
    ....
    Ricorda che in questo caso nella sessione "autorizzato" devi inserire l'id dell'utente oppure la parola admin.
    ma questo lo devo fare in fase di login?

  7. #7

  8. #8
    ok però nel login faccio già così:
    Codice PHP:
    if (isset($_POST['invio'])) {
        
    $user mysql_real_escape_string($_POST['user']);
        
    $pass mysql_real_escape_string($_POST['pass']);
        
    // le password andrebbero criptate!!
        
    $query "SELECT * FROM utenti WHERE nome='" $user "' AND password='" $pass "' LIMIT 1";
        
    $result mysql_query($query$link) or die(mysql_error($link));
        
    // se ha selezionato il rigo che cercavo
        
    if (mysql_num_rows($result) === 1) {
            
    $_SESSION['autorizzato'] = $user;
            
    $destinazione "index.php";
        } else {
            
    $destinazione "destroy.php";
        }
        
    header("Location: $destinazione");
    ......... 
    è possibile far convivere le due cose??

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.