Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 34
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555

    Problema con login utenti

    Salve ragazzi,
    realizzando un'area di accesso privata, sono giunto, senza problemi, al punto in cui si devono inserire nel form di login, username e password.

    I dati inseriti nel form (dopo naturalmente essere stati inseriti nel database nella fase di registrazione dell'utente) vengono elaborati dal file "controllo.php", quello che dovrebbe aprire la sessione.

    Tuttavia non riesco a capire perchè non la apre. Ecco il codice del file "controllo.php":

    <?
    session_start();
    if (isset($_POST['username']) && isset($_POST['password'])) {
    include("config.php");
    mysql_connect($db_host,$db_user,$db_password,$db_n ame) or die ("errore nella connessione");
    mysql_select_db("$db_name") or die ("errore nella selezione del database");

    $hpw=md5($_POST['password']);
    $result=mysql_query("select * from utenti where username='$_POST[username]' and password='$hpw'");
    if (mysql_num_rows($result)!=0) {
    $_SESSION['username']=true;
    redirect_browser('menu.php');
    } else
    echo "Utente non riconosciuto";
    }
    mysql_close();
    ?>


    Inserendo "username" e "password" di un utente precedentemente registrato, mi compare sempre la scritta "utente non riconosciuto". Vale a dire che e come se non riesca a pescare i dati dal database ed eseguire il controllo sugli stessi.

    Perchè?

    p.s. questa è la struttura della tabella "utenti" dove vengono registrati i dati.



    CREATE TABLE `utenti` (
    `id` int(3) NOT NULL auto_increment,
    `nome` varchar(30) NOT NULL default '',
    `cognome` varchar(30) NOT NULL default '',
    `username` varchar(30) NOT NULL default '',
    `password` char(8) NOT NULL default '',
    `mail` char(255) NOT NULL default '',
    `data` char(255) NOT NULL default '',
    `ip` char(15) NOT NULL default '',
    PRIMARY KEY (`id`),
    UNIQUE KEY `id` (`id`),
    KEY `id_2` (`id`)
    )

    Qualcuno sa dirmi dov'è l'errore? ho provato svariate volte a correggere il file "controllo.php", ma non ne sono venuto a capo!!

  2. #2
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Beh il campo password della tabella del DB è un CHAR(8), il che mi pare molto strano visto che l'MD5 genera codici hashati a 32 cifre.

    prova a cambiare il campo "password" da CHAR(8) a VARCHAR(32).


  3. #3
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    ad esempio nel tuo DB la password hashata "test" viene registrata come 098f6bcd invece il vero hashing a 32 cifre di "test" è 098f6bcd4621d373cade4e832627b4f6.

    La struttura del campo "password" tronca le password ch ein fase di controllo non vengono riconosciute ovviamente.


  4. #4
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ho provato a cambiare in VARCHAR (34) ma non accade nulla!
    Non funziona!

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Rettifico quanto detto, Drugo,
    ora sembra funzionare ma esce questa stringa di erroe quando clikko su login:


    Fatal error: Call to undefined function: redirect_browser() in /home/mhd-01/www.iso-consulenze.info/htdocs/registrazione/controllo.php on line 12


    Da che dipende? Sembra non riconoscere la funzione "redirect_broswer()".

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da marckhh
    Rettifico quanto detto, Drugo,
    ora sembra funzionare ma esce questa stringa di erroe quando clikko su login:


    Fatal error: Call to undefined function: redirect_browser() in /home/mhd-01/www.iso-consulenze.info/htdocs/registrazione/controllo.php on line 12


    Da che dipende? Sembra non riconoscere la funzione "redirect_broswer()".
    cos'è redirect_browser?
    Per fare un reindirizzamento si usa
    header("location: pagina.php");

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ciao Nicola.
    Ora funziona perfettamente. Ne approfitto per chiederti una cosa. Ho oramai completato l'area di amministrazione rendendola riservata ad utenti registrati.
    vorrei però fare una cosa. Ma non stò riuscendo nell'impresa. Ossia:

    supponiamo che un utente, registrato, entri nell'area riservata. Ora, vorrei che qualora clikkasse sul bottone del broswer (quello in alto) per tornare indietro alla pagina precedente, si interrompesse la sessione e venga rimandato alla pagina dove effettuare il login, ossia al form.

    Inoltre vorrei capire come far in modo che la sessione vegna distrutta automaticamente magari dopo 10 minuti di navigazione all'interno dell'area riservata. Senza necessità di dover clikkare per forza su "logout".

    Come posso fare? Ma soprattutto, si può fare?

    Grazie mille

  8. #8
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    La sessione scade da sola dopo un periodo di inattività (la durata è dettata dalle impostazioni del server).
    Se pero' vuoi farla scadere tu vi ascript, l'unica cosa ch emi viene in mente è registrare tutte le sessioni in una tabella, registrandone anche l'ora di inizio. Ad ogni inserimento controlli quali sessioni sono partite più di 10 min (ad esempio) prima e le cancelli.

    Questo sistema permette un buon livello di "certezza" ma è molto complesso da gestire.


  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Per limitare una sessione a dieci minuti puoi fare così

    $durata = 60*10; // 10 minuti
    session_set_cookie_params($durata);

    Per la prima domanda non so risponderti e non capisco perchè vorresti costringere l'utente a riautenticarsi se clicca indietro. Mi spiace. Sicuramente qualcuno ti saprà dare una soluzione.

  10. #10
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Originariamente inviato da nicola75ss
    $durata = 60*10; // 10 minuti
    session_set_cookie_params($durata);
    Bellissima questa!!
    Ma in pratica cosi facendo viene sostituito il tempo di timeout della sessione impostato sul server? E basta settarlo una volta sola durante la navigazione dell'utente? (tipo al login).

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.