Visualizzazione risultati 1 fino 8 di 8

Discussione: pagina login

  1. #1
    Guest

    Predefinito 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:

    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");
    }
    ?>
    Fatemi sapere se ci sono errori e, inoltre, sono ben accettati consigli per migliorare il sistema di login.
    Grazie.

  2. #2
    Guest

    Predefinito

    Dici che non salva il gruppo nella sessione, ma non c'è nessuno comando che lo faccia: in sessione salvi solo username da quello che vedo.

  3. #3
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,761

    Predefinito

    Aggiungi session_start() all'inizio del codice.

    L'assegnamento
    Codice PHP:
    $_SESSION['username'] = $username;
    devi farlo soltanto dopo aver verificato che la password è corretta.

    Per il resto, mi sembra che lo script possa funzionare.
    Alcuni consiglietti:

    • Perché usi GET?
    • Le funzioni mysql_* sono deprecate. Dovresti usare mysqli_* (alla fine non cambia molto a livello implementativo).


    Ciao!
    Ultima modifica di alemoppo : 27-09-2013 alle ore 14.43.38

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da helpcode Visualizza messaggio
    Dici che non salva il gruppo nella sessione, ma non c'è nessuno comando che lo faccia: in sessione salvi solo username da quello che vedo.
    Si scusa l'avevo messo e l'ho tolto dopo per fare una prova con $row['gruppo'] se fosse vuoto o no, infatti da quello che c'è scritto controlla se è esiste o no, e quando vado a fare il login mi dice che non esiste.

    Comunque session_start(); ce l'ho già all'inizio della pagina (ho soltanto copiato e incollato il codice php che mi interessava, il resto funziona)

    Ad alemoppo, uso GET perchè mi trovo bene e non mi ha mai dato problemi, prima usavo POST ma su alcune cose mi dava problemi. Se mi puoi consigliare qualcosa di meglio accetto volentieri consigli
    Per mysqli_* sinceramente non l'ho mai usato, se mi dici che è migliore di mysql_* che cambia qualcosa allora inizio subito a studiare questa funzione che mi manca. (La studio comunque, serva o no. ti ringrazio per il consiglio).

    Un ultima cosa e non disturbo più
    Secondo voi il menu del sito conviene inserirlo in un database in modo tale da poter aggiungere o eliminare o modificare il link di una pagina? (Domanda forse un pò stupida ma per me no )

    Grazie.

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,761

    Predefinito

    Citazione Originalmente inviato da catellorusso Visualizza messaggio
    Ad alemoppo, uso GET perchè mi trovo bene e non mi ha mai dato problemi, prima usavo POST ma su alcune cose mi dava problemi. Se mi puoi consigliare qualcosa di meglio accetto volentieri consigli
    Strano che ti ha dato problemi... Usare POST in questi casi è meglio. Uno dei motivi principali è che i parametri GET vengono inviati tramite URL, quindi possono essere indicizzati, sfruttati da malaware, etc... Poi, teoricamente le richieste "GET" dovrebbero essere usate soltanto per recuperare informazioni, e non eseguire operazioni come nel tuo caso.

    Citazione Originalmente inviato da catellorusso Visualizza messaggio
    Per mysqli_* sinceramente non l'ho mai usato, se mi dici che è migliore di mysql_* che cambia qualcosa allora inizio subito a studiare questa funzione che mi manca. (La studio comunque, serva o no. ti ringrazio per il consiglio).
    Non dico che sia migliore, ma la documentazione parla chiaro (esempio mysql_query()):
    This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information. Alternatives to this function include:

    mysqli_query()
    PDO::query()
    Non devi studiare circa nulla, perché almeno per le funzioni base, i nomi delle funzioni sono pressoché identici: in pratica è necessario aggiungere la "i" dopo "mysql". "Spiegare" le differenze in questo modo mi rendo conto che è brutto, ma è così .
    Ah, forse una differenza degna di nota è che con mysqli hanno aggiunto il supporto alla programmazione OOP.


    Citazione Originalmente inviato da catellorusso Visualizza messaggio
    Un ultima cosa e non disturbo più
    Secondo voi il menu del sito conviene inserirlo in un database in modo tale da poter aggiungere o eliminare o modificare il link di una pagina? (Domanda forse un pò stupida ma per me no )
    Beh, secondo me dipende da quante modifiche pensi di farci. Se pensi di tenere le varie voci fisse e non modificarle mai, direi che un menù "statico" vada bene... Dipende da come vuoi fare il sito e dall'implementazione.

    Ciao!
    Ultima modifica di alemoppo : 28-09-2013 alle ore 02.49.28

  6. #6
    Guest

    Predefinito

    Mi infilo nella discussione solo a proposito del menu. Personalmente mi trovo assai bene a creare appositamente un bel file php di servizio (il classico menu1.php) contenente il "pezzo" di codice relativo al menu di navigazione che rimane praticamente uguale ad ogni pagina e poi usare include() appunto su ciascuna pagina.... Poi effettivamente se hai molti link dinamici non so se sia una soluzione...

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Strano che ti ha dato problemi... Usare POST in questi casi è meglio. Uno dei motivi principali è che i parametri GET vengono inviati tramite URL, quindi possono essere indicizzati, sfruttati da malaware, etc... Poi, teoricamente le richieste "GET" dovrebbero essere usate soltanto per recuperare informazioni, e non eseguire operazioni come nel tuo caso.


    Non dico che sia migliore, ma la documentazione parla chiaro (esempio mysql_query()):


    Non devi studiare circa nulla, perché almeno per le funzioni base, i nomi delle funzioni sono pressoché identici: in pratica è necessario aggiungere la "i" dopo "mysql". "Spiegare" le differenze in questo modo mi rendo conto che è brutto, ma è così .
    Ah, forse una differenza degna di nota è che con mysqli hanno aggiunto il supporto alla programmazione OOP.



    Beh, secondo me dipende da quante modifiche pensi di farci. Se pensi di tenere le varie voci fisse e non modificarle mai, direi che un menù "statico" vada bene... Dipende da come vuoi fare il sito e dall'implementazione.

    Ciao!
    Grazie per il consiglio, inizierò ad usare questa funzione ovviamente studiando bene

    Citazione Originalmente inviato da coreyx Visualizza messaggio
    Mi infilo nella discussione solo a proposito del menu. Personalmente mi trovo assai bene a creare appositamente un bel file php di servizio (il classico menu1.php) contenente il "pezzo" di codice relativo al menu di navigazione che rimane praticamente uguale ad ogni pagina e poi usare include() appunto su ciascuna pagina.... Poi effettivamente se hai molti link dinamici non so se sia una soluzione...
    Per il menu sono indeciso se usare il classico file .php come dici tu o il db, pensandoci però molte modifiche alle pagine non ci saranno anche perchè sto costruendo un gestionale di prenotazioni, quindi non dovrebbe avercene bisogno, più che altro volevo crearlo salvandomi la "base" e usarlo per un nuovo sito.

    Voi cosa mi consigliate?

    Vi ringrazio per avermi risposto e per i tanti UTILI consigli che mi date.

  8. #8
    Guest

    Predefinito

    RISOLTO!! Prima di tutto ho fatto come diceva alemoppo, usando $_POST e poi in $_POST['pass'] dovevo mettere $_POST['password'] altrimenti non richiamava il textbox. Poi ho fatto il conteggio dei record della $query quindi con mysql_num_rows... e se >0 allora fa il login altrimenti dà errore. Se conoscete un metodo più "professionale" o più "veloce" fatemi sapere subito. Intanto per me così funziona, non so se è più sicuro o meno.
    Consigliatemi! ;)

Tags for this Thread

Regole di scrittura

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