Visualizzazione risultati 1 fino 8 di 8

Discussione: Login via Email e non Username

  1. #1
    Guest

    Predefinito Login via Email e non Username

    Salve a tutti!
    Il codice che permette il login sul mio sito si appoggia ad una database. Il login prevede però l'utilizzo di una username, di una password e del tipo di utente che sta effettuando il login. Per ogni tipo di utente (User o Administrator) c'è una tabella nel database rispettivamente di nome (users e admins) e ognuna di queste tabelle ha i campi (fra parentesi il tipo): id(int), username(varchar), password(varchar), email(varchar), created_ad(datetime).

    Dopo questa premessa posto il codice per il login:
    Codice PHP:
    <form action="#" method="post" style="margin-top: 0px;">
    <div style="margin-top: auto;">
    <label>username :
    <input type="text" name="username" id="username" />
    </label>
    <label>password :
    <input type="password" name="password" id="password" />
    as :</label>
    <label>
    <select name="type" id="type">
    <option value="users">User</option>
    <option value="admins">Administrator</option>
    </select>
    </label>
    <label>
    <input type="submit" name="Login" id="Login" value="Login" />
    </label>
    </div>
    </form>

    <?php
    $user_data
    = parse_params();
    if(
    $user_data)
    {
    if(
    login($user_data['username'],$user_data['password'],$user_data['type']))
    {
    redirect_to('index.php');
    }
    }
    ?>
    Ora vorrei che nel codice per il login venisse utilizzato non il campo username, ma il campo 'email'. Oppure indifferentemente l'uno o l'altro.
    Per il primo caso ho provato semplicemente a sostituire 'username' con 'email' ma non ha funzionato per il secondo pensavo di sostituire questa stringa (che fra l'altro Dreamweaver non mi segna nemmeno come sbagliata), ma non ci ho nemmeno provato:
    Codice PHP:
    if(login($user_data['username'] or $user_data['email'], $user_data['password'],$user_data['type']))
    Che ne pensate?
    Approfitto anche per chiedervi un eventuale form per registrare un account del tipo 'User' e se possibile con la richiesta di conferma della registrazione via email.
    Grazie!
    Ultima modifica di apple2 : 21-03-2011 alle ore 16.58.28

  2. #2
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    ciao, sono eurosalute....

    dovresti controllare il codice delle due funzioni e postarlo....

    parse_params()

    login()

    alla funzione login vengono passati i valori di username, password e tipo
    Ultima modifica di EuroSalute : 21-03-2011 alle ore 17.12.47 Motivo: info...
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  3. #3
    Guest

    Predefinito

    Non so se è esattamente questo:

    Codice PHP:
    function parse_params()
    {
    $params = array();
    if (!empty(
    $_POST))
    {
    $params = array_merge($params, $_POST);
    }
    return
    $params;
    }
    Codice PHP:
    function login($username, $password, $type)
    {
    $connection = db_connect();
    $query = sprintf("select * from %s
    where username = '%s' and password = '%s'"
    ,
    mysql_real_escape_string($type),
    mysql_real_escape_string($username),
    mysql_real_escape_string($password)
    );
    $result = mysql_query($query);
    $number_of_results = mysql_num_rows($result);
    if (
    $number_of_results == 0)
    { return
    false; }
    $row = mysql_fetch_array($result);
    $_SESSION['user'] = $row;
    $_SESSION['user']['type'] = $type;
    return
    true;
    }
    Grazie

  4. #4
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    si le funzioni sono quelle....

    ora si tratta di vedere bene come vuoi fare, è semplice se vuoi sostituire email a username....?

    però prima si dovrebbe fare un controllo sull'email e aggiungere il campo input email nel form.....

    funzione per il controllo del campo input email:
    Codice PHP:
    function Verify_Email_Address($email_address) {
    $regex = "/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/";
    return
    preg_match($regex, $email_address);
    }
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  5. #5
    Guest

    Predefinito

    Per il campo email nel form non basta sostituire a
    <input type="text" name="username" id="username" /> ,
    <input type="text" name="email" id="email"*/>
    ?
    Non devo modificare qualcosa nelle due funzioni qui sopra?
    E scusami ma da quel che ho capito il controllo del campo input email che hai postato serve solo a controllare la sintassi inserita n nel form... In tal caso non ne trovo l'utilità. Correggimi se sbaglio
    Grazie per la pazienza
    Ultima modifica di apple2 : 21-03-2011 alle ore 19.45.30

  6. #6
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    si puoi fare così per l'input email, mentre devi modificare la query nella funzione...

    per la funzione di controllo email si non è indispensabile....

    ovviamente devi passare email invece che username nella funzione:

    Codice PHP:
    //sostituisci
    //function login($username, $password, $type)

    //con
    function login($email, $password, $type)

    //sostituisci
    /*$query = sprintf("select * from %s where username = '%s' and password = '%s'",
    mysql_real_escape_string($type),
    mysql_real_escape_string($username),
    mysql_real_escape_string($password)
    );*/
    //con
    $query = sprintf("select * from %s
    where email = '%s' and password = '%s'"
    ,
    mysql_real_escape_string($type),
    mysql_real_escape_string($email),
    mysql_real_escape_string($password)
    );


    //sostituisci
    //$_SESSION['user'] = $row;

    //con
    $_SESSION['user'] = $row['username'];
    così dovrebbe funzionare, prova!?
    _________________________________________

    ah, scusa, probabilmente $_SESSION['user'] = $row; non devi sostituirlo.....con $_SESSION['user'] = $row['username'];

    prova a fare un print_r($row);
    Ultima modifica di EuroSalute : 21-03-2011 alle ore 20.54.26 Motivo: info...
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  7. #7
    Guest

    Predefinito

    Funziona perfettamente!
    Hai un posto garantito nei ringraziamenti del sito ;) (per quanto possa valere!)
    Se posso approfittare...
    È possibile un login attraverso username O attraverso email, indifferentemente?
    Come si crea un form per la registrazione di utenti (type users)?
    I campi del form sono username, password (e se possibile conferma password con script di verifica, ma se chiedo troppo fa nulla) ed email. Il valore id del database è dato con l'extra auto_increment, significa che se il primo utente ha id 1 quello che si registra avrà id 2?
    Il campo 'created_at' del database si compilerà automaticamente?

    Grazie, e buona serata!

  8. #8
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    per scegliere un login ...username or email....utilizza lo stesso form option per il tipo di login....e dovrebbe funzionare....esempio:

    Codice HTML:
    <label> 
    username o email : 
              <input type="text" name="useremail" id="useremail" />
    
              <select name="scegli" id="scegli">
                <option value="username">Username</option>
                <option value="email">Email</option>
              </select> 
    </label>
    $useremail conterrà o l'username o l'email , in base a $scegli

    poi nella funzione passi sia $useremail e $scegli, e con :
    Codice PHP:
    function login($useremail, $password, $type, $scegli) {
    //esempio
    if ($scegli=="username") //fai la query con username usando $useremail
    else if($scegli=="email") //fai la query con email usando $useremail
    else return false;//qualcosa è andato storto....

    }

    se devi creare un form di registrazione utenti(pensavo che questo form fossse già presente), prima devi guardare come è strutturata la tabella (se c'è).....

    per la conferma password, basta che inserisci un altro input password e confronti i due valori se uguali.....

    l'auto increment dovrebbe incrementare di una unità....

    quel campo created_ad dovrebbe in base alla data e all'ora suppongo
    Ultima modifica di EuroSalute : 21-03-2011 alle ore 22.27.35 Motivo: info....
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

Regole di scrittura

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