Visualizzazione risultati 1 fino 3 di 3

Discussione: login con ASP e MS Access

  1. #1
    Guest

    Predefinito login con ASP e MS Access

    ciao a tutti nel mio sito ho creato una sezione di log-in in modo da poter entrare in una pagina privata con nome e password.
    Ho seguito questo procedimento:

    MS Access, nuovo un database vuoto che salvo come Login.mdb.
    A questo punto posso creare la mia tabella in visualizzazione struttura:

    - IDUtente di tipo contatore che sarà la chiave primaria della tabella.
    - UserID di tipo testo
    - Password di tipo testo



    A questo punto salvo la tabella, che chiamo Utenti e il database è pronto.

    realizzazione del form di login:

    log-in.html

    Codice HTML:
    <form name="frmLogin" method="post" action="Login.asp">
    UserID: <input type="text" name="txtUserID"> 
    Password: <input type="password" name="txtPassword"> 
      <input type="submit" name="Submit" value="Invia"> 
    </form>
    creo una pagina asp, a cui do il nome di Login.asp, che avrà il compito di confrontare i dati inseriti dall'utente con quelli presenti nel database e di conseguenza dare accesso o meno alla pagina riservata.

    Codice:

    Codice:
    <%@LANGUAGE="VBSCRIPT"%>
    <%
    Dim UserID
    Dim Password
    Dim conn
    Dim rst
    Dim strSQL
    
    'Leggiamo i dati immessi nel form di login
    UserID = Replace(Request.Form("txtUserID"),"'","""")
    Password = Replace(Request.Form("txtPassword"),"'","""")
    
    'Apriamo la connessione col database
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & _
    Server.MapPath("Login.mdb")
    'Impostiamo la query
    strSQL = "SELECT * FROM Utenti " & _
    "WHERE (((Utenti.UserID)='" & UserID & _
    "') AND ((Utenti.Password)='" & Password & "'));"
    
    'Apriamo il recordset
    Set rst = Server.CreateObject("ADODB.Recordset")
    rst.open strSQL, conn
    
    'Verifichiamo se ha trovato nel database i dati di login
    if rst.BOF and rst.EOF then
    Session("LoginStatus") = false
    Response.Redirect("Index.html")
    else
    Session("LoginStatus") = true
    Response.Redirect("AreaRiservata.html")
    end if
    
    'Liberiamo la memoria
    rst.close
    set rst = nothing
    conn.close
    set conn = nothing
    %>
    Poi ho caricato le pagine (log.in.html / il file .mdb creato con access / login.asp e AreaRiservata.html)

    Eseguo il login ma mi rimanda sempre alla pagina bianca login.asp, anche se metto i dati sbagliati va alla pagina login.asp

    Cosa ho sbagliato?
    Ultima modifica di andreafallico : 18-05-2010 alle ore 23.48.56

  2. #2
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Su AlterVista puoi utilizzare PHP + MySQL, ASP non è supporatato.

  3. #3
    Guest

    Predefinito

    ora ho provato in php, ecco la guida

    Ecco il codice completo da usare per la pagina di login (da salvare come login.php):


    Codice PHP:
    require("config.php");

    echo
    "<h1>Login</h1>\n";

    // Parte A
    if ($action == FALSE)
    {
    $user = "";
    $query = @mysql_query("SELECT * FROM members ORDER BY nome ASC");
    while(
    $result = @mysql_fetch_array($query))
    {
    $user .= "<option value=\"" . $result[0] . "\">" . $result[1] . "</option>\n";
    }

    echo
    "<form action=\"./login.php\" method=\"post\">\n";
    echo
    "<table width=\"100%\" border=\"0\">\n";
    echo
    "<tr>\n";
    echo
    "<td width=\"8%\"><strong>Username</strong></td>\n";
    echo
    "<td width=\"92%\">\n";
    echo
    "<select name=\"user\">\n";
    echo
    "<option>Seleziona...</option>\n";
    echo
    $user;
    echo
    "</select>\n";
    echo
    "</td>\n";
    echo
    "</tr>\n";
    echo
    "<tr>\n";
    echo
    "<td><strong>Password</strong></td>\n";
    echo
    "<td><input type=\"password\" name=\"pass\"></td>\n";
    echo
    "</tr>\n";
    echo
    "<tr>\n";
    echo
    "<td colspan=\"2\">\n";
    echo
    "<input type=\"hidden\" name=\"action\" value=\"login\">\n";
    echo
    "<input type=\"submit\" value=\" Login! \">\n";
    echo
    "</td>\n";
    echo
    "</tr>\n";
    echo
    "</table>\n";
    echo
    "</form>\n";
    }

    // Parte B
    else
    {
    if (
    $user == TRUE && $pass == TRUE)
    {
    $query = @mysql_query("SELECT * FROM members WHERE id = $user");
    $result = @mysql_fetch_array($query);
    if (
    $pass == $result[2])
    {

    @
    setcookie("logged");
    echo
    "Ok!<br>\n";
    echo
    "Login effettuato correttamente!";
    echo
    "<a href=\"./privata.php\">Entra nella sezione privata!</a>";
    }
    else
    {
    echo
    "Errore!<br>Password errata!";
    }
    }
    else
    {
    echo
    "Errore!<br>Non hai compilato tutti i campi obbligatori.";
    }
    }

    @
    mysql_close();
    Come vedete abbiamo suddiviso il codice in 2 parti che abbiamo chiamato, rispettivamente, parte "A" e parte "B".

    La struttura della parte "A" è molto simile a quella della pagina memberslist.php, infatti viene usato ancora un ciclo while() per stampare a video i vari username presenti nel database e tramite un form, vengono inviati i dati da verificare.
    Ecco il modo per verificare la correttezza o meno della password inserita :)

    Veniamo ora alla parte "B".
    Come prima cosa, si nota ancora una volta, un if() di controllo che ci serve per controllare i campi obbligatori, che in questo caso sono l'username (da selezione nel select) e la password (da inserire).
    Se sono stati compilati correttamente tutti e due i form, effettua il controllo altrimenti rimanda un messaggio di errore.
    Per effettuare il controllo l'applicazione richiama tramite la selezione del'id una riga, più precisamente, seleziona la password ed effettua un controllo, ancora una volta tramite un if().
    Se la password è corretta crea un cookie e stampa a video un messaggio, altrimenti invia un messaggio di errore.


    Prima della creazione del cookie, non devono essere impostati altri header perchè altrmenti invia un messaggio di errore e non riesce a crearlo.

    Per finire vediamo come creare la pagina di controllo.
    Mi spiego meglio... per non dover inserire ogni volta nelle pagine private la solita stringa di codice, salviamo un file chiamato check.php e ci salviamo dentro questo codice:


    Codice PHP:
    if (!isset($_COOKIE["logged"]))
    {
    echo
    "Non sei ancora loggato!<br>\n";
    require(
    "login.php");
    exit();
    }
    A che cosa serve?
    La risposta, direi che è già stata data; comunque credo sia giusto spigare un pochino che cosa significhi quel codice che abbiamo appena visto.
    Viene innanzi tutto fatto un controllo sui cookie, o meglio, sul cookie che deve essere creato per poter accedere all'area privata, che, noi abbiamo chiamato "logged".
    Se il cookie c'è, visualizza la pagina privata, altrimenti include nella pagina stessa il file "login.php", appunto per effettuare il Login.

    Vediamo infine un esempio di codice da inserire nelle pagine private:


    Codice PHP:
    require("config.php");
    require(
    "check.php");
    ?>

    <html>
    <body>
    ...
    Il resto della pagina...
    ...
    </body>
    </html>
    *ma alla pagina login php aprendola mi dice: Parse error: syntax error, unexpected '{' in /membri/flightx/login.php on line 68
    Ultima modifica di dreadnaut : 19-05-2010 alle ore 14.47.53 Motivo: + tag [php]

Regole di scrittura

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