• User

    pagina login

    Salve,
    Ho un problema con la pagina di login... in pratica quando faccio l'accesso mi deve conservare in una sessione il gruppo dell'user che ha appena effettuato l'accesso, però facendo varie prove non si salva.
    Ecco il codice:

    [PHP]
    <?php
    if (!isset($_SESSION['username'])) {
    if (isset($_GET['login'])) {
    $username = mysql_real_escape_string($_GET['user']);
    $password = mysql_real_escape_string(sha1($_GET['pass']));
    $_SESSION['username'] = $username;
    $query = mysql_query("SELECT * FROM personale WHERE user='$username' AND password='$password'");
    $row = mysql_fetch_array($query);
    if (isset($row['gruppo'])) { echo "ok"; }
    else { echo "no"; }
    } else {?>
    <form method="GET" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <input type="text" name="user"> <input type="password" name="password">
    <input type="submit" name="login">
    </form>
    <?php
    }
    } else { header("Location: index.php"); }
    ?>
    [/PHP]

    Fatemi sapere se ci sono errori e, inoltre, sono ben accettati consigli per migliorare il sistema di login.
    Grazie.


  • User Attivo

    Ipotizzando che la sessione sia già avviata, ho l'impressione che non è stata definita la variabile del gruppo nell'array di sessione, in sostanza penso che si dovrebbe cambiare questa riga:

    [PHP]if (isset($row['gruppo'])) { echo "ok"; }[/PHP]

    a cui dovrai aggiungere prima o dopo la visualizzazione di "ok" l'inizializzazione alla variabile di sessione $_SESSION['gruppo'] con il valore opportuno.

    Penso che abbia fatto un controllo inutile con la funzione mysql_real_escape_string() perché la funzione sha1() già riporta un risultato (esadecimale) che certamente è sicuro. Ancora riguardo la funzione mysql_real_escape_string() fai attenzione che sarà deprecata dalla versione di PHP 5.5 e deve essere sostituita con quest'altra: mysqli_real_escape_string()

    Cosa importante da ricordare è quella di utilizzare sempre il metodo POST quando si mandano le password, almeno non sono visualizzate sulla barra degli indirizzi del browser.


  • User Newbie

    @JK93h said:

    Salve,
    Ho un problema con la pagina di login... in pratica quando faccio l'accesso mi deve conservare in una sessione il gruppo dell'user che ha appena effettuato l'accesso, però facendo varie prove non si salva.
    Ecco il codice:

    [PHP]
    <?php
    if (!isset($_SESSION['username'])) {
    if (isset($_GET['login'])) {
    $username = mysql_real_escape_string($_GET['user']);
    $password = mysql_real_escape_string(sha1($_GET['pass']));
    $_SESSION['username'] = $username;
    $query = mysql_query("SELECT * FROM personale WHERE user='$username' AND password='$password'");
    $row = mysql_fetch_array($query);
    if (isset($row['gruppo'])) { echo "ok"; }
    else { echo "no"; }
    } else {?>
    <form method="GET" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <input type="text" name="user"> <input type="password" name="password">
    <input type="submit" name="login">
    </form>
    <?php
    }
    } else { header("Location: index.php"); }
    ?>
    [/PHP]

    Fatemi sapere se ci sono errori e, inoltre, sono ben accettati consigli per migliorare il sistema di login.
    Grazie.

    Manca session_start(); prima di tutti gli altri codici 😉