Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    32

    Autenticazione tramite password

    Ho realizzato un sito che prevede l'accesso tramite autenticazione mediante l'inserimento di una username ed una password.
    Per realizzare il codice ASP delle pagine che si occupano dell'autenticazione ho utilizzato Dreamweaver, che mi ha generato automaticamente il seguente codice:


    <%@LANGUAGE="JAVASCRIPT" CODEPAGE="1252"%>

    <%
    // *** Validate request to log in to this site.
    var MM_LoginAction = Request.ServerVariables("URL");
    if (Request.QueryString!="") MM_LoginAction += "?" + Request.QueryString;
    var MM_valUsername=String(Request.Form("nome"));
    if (MM_valUsername != "undefined") {
    var MM_fldUserAuthorization="LivelloUtente";
    var MM_redirectLoginSuccess="../html/asa.htm";
    var MM_redirectLoginFailed="erroreitalianostart.asp";
    var MM_flag="ADODB.Recordset";
    var MM_rsUser = Server.CreateObject(MM_flag);
    MM_rsUser.ActiveConnection = MM_mioDatabase_STRING;
    MM_rsUser.Source = "SELECT UserNameUtente, PasswordUtente";
    if (MM_fldUserAuthorization != "") MM_rsUser.Source += "," + MM_fldUserAuthorization;
    MM_rsUser.Source += " FROM Utente WHERE UserNameUtente='" + MM_valUsername.replace(/'/g, "''") + "' AND PasswordUtente='" + String(Request.Form("password")).replace(/'/g, "''") + "'";
    MM_rsUser.CursorType = 0;
    MM_rsUser.CursorLocation = 2;
    MM_rsUser.LockType = 3;
    MM_rsUser.Open();
    if (!MM_rsUser.EOF || !MM_rsUser.BOF) {
    // username and password match - this is a valid user
    Session("MM_Username") = MM_valUsername;
    if (MM_fldUserAuthorization != "") {
    Session("MM_UserAuthorization") = String(MM_rsUser.Fields.Item(MM_fldUserAuthorizati on).Value);
    } else {
    Session("MM_UserAuthorization") = "";
    }
    if (String(Request.QueryString("accessdenied")) != "undefined" && false) {
    MM_redirectLoginSuccess = Request.QueryString("accessdenied");
    }
    MM_rsUser.Close();
    Response.Redirect(MM_redirectLoginSuccess);
    }
    MM_rsUser.Close();
    Response.Redirect(MM_redirectLoginFailed);
    }
    %>


    Questo invece è il codice che Dreamweaver mi ha inserito nelle pagine che desidero proteggere:


    <%@LANGUAGE="JAVASCRIPT"%>
    <%
    // *** Restrict Access To Page: Grant or deny access to this page
    var MM_authorizedUsers="cliente,tecnico,admin";
    var MM_authFailedURL="../../../asp/erroreitaliano.asp";
    var MM_grantAccess=false;
    if (String(Session("MM_Username")) != "undefined") {
    if (false || (String(Session("MM_UserAuthorization"))=="") || (MM_authorizedUsers.indexOf(String(Session("MM_Use rAuthorization"))) >=0)) {
    MM_grantAccess = true;
    }
    }
    if (!MM_grantAccess) {
    var MM_qsChar = "?";
    if (MM_authFailedURL.indexOf("?") >= 0) MM_qsChar = "&";
    var MM_referrer = Request.ServerVariables("URL");
    if (String(Request.QueryString()).length > 0) MM_referrer = MM_referrer + "?" + String(Request.QueryString());
    MM_authFailedURL = MM_authFailedURL + MM_qsChar + "accessdenied=" + Server.URLEncode(MM_referrer);
    Response.Redirect(MM_authFailedURL);
    }
    %>


    Vorrei modificare il codice ASP in modo da verificare 3 variabili invece delle attuali 2 (username e password).

    Chi mi aiuta?

    Un saluto

  2. #2
    ehm scusami tanto, ma quel codice fa a dir poco paura... VVoVe:


    ti suggerisco caldamente di fare te il codice, perchè moltissime di quelle righe sono inutili e appesantiscono notevolmente il server...
    Matrix è ovunque, è intorno a noi, anche adesso nella stanza in cui siamo. È quello che vedi quando ti affacci alla finestra o quando accendi il televisore. L'avverti quando vai al lavoro, quando vai in chiesa, quando paghi le tasse. È il mondo che ti è stato messo dinanzi agli occhi, per nasconderti la verità.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    32

    Alternative ...

    Mi è stato suggerito di provare con questo codice:


    <%@LANGUAGE="VBSCRIPT"%>

    <%
    if request("user1") <> "" and request("user2") <> "" and request("user3") <>
    "" then

    Set Recordset1 = Server.CreateObject("ADODB.Recordset")
    Recordset1.ActiveConnection = MM_connCHAT_STRING
    Recordset1.Source = "SELECT * FROM tbchat WHERE USER1 = " &
    request("user1") & " and USER2 = " & request("user2") & " and USER3 = " &
    request("user3") & ""
    Recordset1.CursorType = 0
    Recordset1.CursorLocation = 2
    Recordset1.LockType = 1
    Recordset1.Open()

    If Recordset1.EOF And Recordset1.BOF Then 'se il recordset � vuoto allora
    la username e la password sono errate
    errore = "i tre valori non corrispondono"
    else 'se il recordset esiste allora i 3 parametri inviati esistono
    errore = "bravo"
    end if

    Recordset1.Close()
    Set Recordset1 = Nothing
    END IF
    %>
    <html>
    <head>
    <title>Documento senza titolo</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>

    <body>
    <% response.write errore & "
    " %>

    <form name="form1" method="post" action="">



    <input name="user1" type="text" id="user1">
    </p>



    <input name="user2" type="text" id="user2">
    </p>



    <input name="user3" type="text" id="user3">
    </p>



    <input type="submit" name="Submit" value="Invia">
    </p>
    </form>

    </body>
    </html>


    Come avrai capito non conosco l'ASP perciò sto cercando di cogliere l'occasione per imparare qualcosa.

    Approfittando ulteriormente della tua disponibilità vorrei tuttavia sottoporti alcuni ulteriori dettagli:

    1)Per ragioni di sicurezza il mio hosting ha disabilitato la possibilità di specificare percorsi relativi per le connessioni ai database; utilizzando il tuo codice dovrei predisporre un file per la connessione in ogni cartella in cui si trovi una pagina da proteggere: è possibile adoperare un solo file per effettuare il login e memorizzare i dati inseriti dall'utente in variabili che possano venire poi consultate? :master:

    2)Vorrei specificare che la terza variabile da controllare non proviene da dati immessi dall'utente, ma da un database, secondo lo schema riprodotto nel file "database.gif" allegato:

    Quando si cerca di aprire la pagina "patate" viene controllato se l'utente loggato, in corrispondenza della sua riga e della colonna "patate", il valore memorizzato corrisponda a "Si" (o "vero" o quantaltro).

    Questo tipo di gestione degli accessi ci permetterebbe due vantaggi:
    -un controllo più flessibile dei permessi, rispetto al tradizionale sistema di gestione a "livelli"
    -una sola immissione dei dati per tutte le pagine

    E' possibile?

    Un saluto e grazie ancora per la tua disponibilità!!

  4. #4
    Utente di HTML.it L'avatar di Cream
    Registrato dal
    Feb 2002
    Messaggi
    534
    scusa ma a meno che non sia un sito importante puoi usare del codice semplice e man mano che imparti l'asp lo modifichi e lo migliori


    fai un form con nome e pass in html

    poi passi le variabili ad una apgina asp dove le recuperi e fai un controllo con un semplice if e gli dici che se è uguale crei un cookie con scritto ok altrimenti lo rimandi alla pagina di prima o gli dici che non sono giusti

    poi nelle altre pagine itnerne prima di tutto metti un controllo sul cookie se c'è scritto ok

    parti da questo principio semplice sviluppalo con le tue forze e piano piano passi a script un po' più complessi


    se invece non te ne frega niente di quello che ho detto vai su html.it nella parte dell'asp e ci sono script di autenticazione ciao e buon lavoro

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 © 2025 vBulletin Solutions, Inc. All rights reserved.