Visualizzazione risultati 1 fino 5 di 5

Discussione: Login: alcune domande

  1. #1
    Guest

    Predefinito Login: alcune domande

    Ciao a tutti
    mi trovo a dover sviluppare per la prima volta una procedura di login, e mi trovo un attimo indeciso su quale soluzione adottare tra le tante che mi si parano davanti. In termini di sicurezza, sicuramente una sarà migliore piuttosto che un'altra, e vorrei scrivere questa parte di un mio programa senza metterci troppo le mani in futuro ;)

    Le mie domande sono le seguenti:
    1. Nella pagina di login, per verificare se l'utente è connesso devo fare una verifica sulle variabili $_SESSION e se sono settati i relativi parametri dell'utente (con la procedura isset)?
    2. É sufficiente il metodo di cui sopra per verificare se l'utente è connesso e se ha l'autorizzazione per determinate aree protette? (presupponendo che si sia registrata una opportuna variabile $_SESSION con un flag che indica se l'utente è admin oppure no)
    3. Quali variabili $_SESSION secondo voi sono da registrare? Sono in genere sufficienti nome utente e status (admin / non admin)?
    4. In che modo possono aiutarmi i cookie nel valutare se un utente è collegato oppure no? Essendo un controllo aggiuntivo, aumentano la sicurezza in uno script oppure no?
    5. Infine, con che metodo si può effettuare una disconnessione automatica di un utente dopo un tot periodo di inattività?


    So che sono molte domande, ma devo avere delle basi di teoria per poter stendere un codice che sia quantomeno buono ed è tutto il giorno che googlo senza trovare certezze Grazie in anticipo

  2. #2
    Guest

    Predefinito

    Dipende da come vuoi gestirla. Dovrai controllare i valori delle variabili di $_SESSION in modo da fare i contorlli che vuoi.

    Utilizzerei oltre le sessioni, anche dei Cookie.

    l'Id per lavorare col database, l'username se vuoi fare un eventuale controllo e mostrarlo, i permessi per le categorie.

    Teoricamente si, ma dipende se basi tutto sui cookie o meno. Ricorda che questi si possono modificare a mano.

    Utilizzando la funzione time() puoi creare il timestamp unix di quando viene visualizzata la pagina. Quindi dovrai impostare il cookie o una sessione che dica che l'utente è appena entrato, registrare il timestamp() poi fare un controllo in base ai volri che dici.

    Ci sono comunque tante risposte a queste domande che sono state tantissime volte in precedenza.


  3. #3
    Guest

    Predefinito

    Grazie biccheddu, è un inizio =)
    C'è qualche documentazione online al riguardo che posso leggere e che può darmi una mano?

  4. #4
    Guest

    Predefinito

    Come detto, se non dai indiciazioni precise su quello che vuoi fare, riceverai sempre risposte generali come la mia.

    Il sistema lo vuoi creare tu o vuoi utilizzarne uno già pronto come devLogin?

  5. #5
    Guest

    Predefinito

    Lo voglio realizzare io, possibilmente nel modo più sicuro possibile. Una bozza che ho preparato è questa:
    Codice PHP:
    <?php
    // Include configuration file
    include("conf.php");
    session_start();
    if ( (!isset(
    $_SESSION["username"])) && (!isset($_SESSION["password"])) && (!isset($_SESSION["admin"])) ) {
    echo(
    '<div id="login_form">
    <form name="login_form" action="" method="post">
    <input type="text" name="username" value="username" style="position: absolute; top: 63px; left: 95px;" />
    <input type="text" name="password" value="password" style="position: absolute; top: 102px; left: 95px;" />
    <input type="button" value="reset" onclick="fldreset();" style="position: absolute; top: 138px; left: 112px;" />
    <input type="submit" value="login" style="position: absolute; top: 138px; left: 193px;" />
    </form>
    </div>'
    );
    // Define the query for finding a user in the database
    $search_user = "SELECT username, password, admin FROM " . db_tblprefx . "user WHERE username = '" . $_POST["username"] . "' AND password = '" . md5($_POST["password"]) . "';";
    // Search the database for the user who's trying to login
    $connect = mysql_connect(db_host, db_username, db_password)
    or die(
    "Can't connect to the database... Wrong username or password");
    mysql_select_db(db_name, $connect)
    or die(
    "Can't connect to the database... The database doesn't exist");
    $res = mysql_query($search_user, $connect)
    or die(
    "Query failed (user)");
    // If user exists and the passwords match
    if (mysql_num_rows($res) == 1) {
    // Create a record with the result
    while ($r = mysql_fetch_assoc($res)) {
    $_SESSION["username"] = $r["username"];
    $_SESSION["password"] = $r["password"];
    $_SESSION["admin"] = $r["admin"];
    }
    header("Location: cpanel.php");
    } else echo(
    "Wrong username or password");
    }
    ?>
    Manca l'action nel form che era un $_SERVER['PHP_SELF']. L'ho eliminata per fare delle prove
    Ultima modifica di mksoftware : 22-08-2009 alle ore 12.03.07

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •