Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: Verificare admin

  1. #1
    Utente di HTML.it L'avatar di Vash SD
    Registrato dal
    Sep 2006
    Messaggi
    502

    Verificare admin

    Salve a tutti,

    Ecco il sistema di login:
    codice:
    <%
    errore = false
    username = trim(request.form("username"))
    password = trim(request.form("password"))
    
    username = replace(username,"'","''")
    password = replace(password,"'","''")
    
    if len(username) > 0 and len(username) > 0 then
    
      set conn = server.createObject("ADODB.Connection")
      conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mapPath("database.mdb")
    
      sql = "SELECT [username] FROM Utenti WHERE [username] = '" & username & "' AND [password] = '" & password & "'"
      set rs = conn.execute(sql)
    
        if rs.eof then
          errore = true
          messaggio = "Login errato!"
        else
          session("username") = rs("username")
          session("userLogged") = true
        end if
    
      rs.close
      set rs = nothing
    
      conn.close
      set conn = nothing
    
    else
    
      errore = true
      messaggio = "I campi sono obbligatori!"
    
    end if
    
    if not errore then response.redirect "index.asp"
    %>
    <html>
      <head>
        <title>Errore: <%=messaggio%></title>
      </head>
      <body>
        <div align="center">
    	 <font color="rgb(182, 50, 20)">Errore:</font><%=messaggio%>
    	</div>
      </body>
    </html>
    Per riconoscere un admin io inserisco questo
    codice:
    if session("username") = "admin"
       Response.redirect("option.asp?utente=admin")
    end if
    Ma non esiste un modo più facile e veloce per aggiugere admin e non nel codice casomai creare una tabella nel database con tutti gli admin e con una query lui mi cerca se l'utente appena loggato ha i privilegi?

    Aspetto critiche e suggerimenti , Saluti!

  2. #2
    Io aggiungerei un campo "si/no" nella tabella "utenti" chiamandolo is_admin.

    Da lì creo la condizione che mi interessa.

  3. #3
    Utente di HTML.it L'avatar di Vash SD
    Registrato dal
    Sep 2006
    Messaggi
    502
    Ottimo ho aggiunto la colonna! Ora volevo fare in modo che potevo aggiungere gli admin dalla pagina option.asp

    option.asp
    codice:
    <div align="center">
     Aggiungi Admin:
     <form method="post" action="aggiungi.asp">
      <input type="text" name="txtadmin" style="Height: 50px; Width: 200px;">
    
      <input type="submit" value="Aggiungi" name="submit" />
     </form>
    </div>
    aggiungi.asp
    codice:
    admin = Request.Form("txtadmin")
    'Creo la connessione
    	    set conn = server.CreateObject ("ADODB.Connection")
    	    conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mapPath("database.mdb")
    
    sSQL="insert into Utenti "
    come continuo? Scusa ma non sono molto esperto..

  4. #4
    Scusa, ero fuori. Sono tornato ora.

    Facciamo così:
    Hai gia una pagina dove inserisci i dati di un nuovo user? (Anche un user normale. Quella che hai scritto non aveva il campo password)

    Se si, postami il codice di quella. Lavoreremo su di essa.

  5. #5
    Utente di HTML.it L'avatar di Vash SD
    Registrato dal
    Sep 2006
    Messaggi
    502
    Io ho una pagina di registrazione!

    register.asp
    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    	<title>Registrati</title>
    </head>
    <body>
     <table cellspadding="3" align="center">
      <tr>
       <td>
        <form method="post" action="reg_verify.asp">
         Username: <input type="Text" name="user" />
    
    
         Password: <input type="Password" name="pass" />
    
    
         Nome: <input type="Text" name="nome" />
    
    
         Email: <input type="Text" name="email" />
    
    
         <input type="Submit" value="Registrati" name="submit" />
        </form>
       </td>
      </tr>
     </table>
    </body>
    </html>
    e reg_verify.asp
    codice:
    <%
    	'Save entered username, password, name and email
    	Username = Request.Form("user")
    	Password = Request.Form("pass")
    	Nome = Request.Form("nome")
            Email = Request.Form("email")
    	
    	if (Username  = "") and (Password = "") and (Name = "") then
    		Response.Write("Compila tutti i campi!")
    	elseif (Username  = "") then
    		Response.Write("Inserisci l'Username!")
    	elseif (Password = "") then
    		Response.Write("Inserisci la password!")
    	elseif (Nome = "") then
    		Response.Write("Inserisci il Nome!")
            elseif (Email = "") then
    		Response.Write("Inserisci l'E-mail!")
    	
    	else
    	    'Build connection
    	    set conn = server.CreateObject ("ADODB.Connection")
    	    conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mapPath("database.mdb")
    
    	    'controllo che lo username non sia già presente nel database
    	    trovato=false
    	    set rs = server.CreateObject ("ADODB.Recordset")
    	    sSQL="select * from Utenti where username='" & Username & "'"
    	    rs.open sSQL,conn,3,3
    	    if not rs.eof then
    	     trovato=true
    	    end if
    		
    	    rs.close
    	    set rs = nothing
    		
    	 if not trovato then
    	      'lo username non è presente lo inserisco nel database
    	      sSQL="insert into Utenti "
    	      sSQL=sSQL & " ([Username], [Password], [Nome], Email) "
    	      sSQL=sSQL & " values ( "
       	      sSQL=sSQL & "'" & Username & "',"
    	      sSQL=sSQL & "'" & Password & "',"
     	      sSQL=sSQL & "'" & Nome & "',"
                  sSQL=sSQL & "'" & Email & "''"
    	      sSQL=sSQL & " )"
    		  
    	      conn.execute(sSQL)
    		
    	    conn.close
    	    set conn=nothing
    	    Response.Write("Ciao  " & Name & " , la registrazione è avvenuta con successo!")
    	 else
      		Response.Write("Lo username  " & Username & " , è già presente del database!")
    	 end if
    	end if
    %>
    Ho solo questa dove inserisco "qualcosa" in un database

  6. #6
    Dopo aver modificato i due file in questo modo, quando vorrai che sia un admin a doversi registrare fai: register.asp?type=admin , altrimenti la registrazione sarà effettuata come utente normale.

    register.asp
    codice:
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
    
    <%
    dim varAdm, msg
    varAdm = 0
    IF Request.QueryString("type") = "admin" THEN
    	varAdm = 1
            msg = "Registrazione Administrator"
    END IF
    %>
    
    
    <h2><%=msg%></h2>
     <table cellspadding="3" align="center">
      <tr>
       <td>
        <form method="post" action="reg_verify.asp">
         Username: <input type="Text" name="user" />
    
    
         Password: <input type="Password" name="pass" />
    
    
         Nome: <input type="Text" name="nome" />
    
    
         Email: <input type="Text" name="email" />
    
    
         <input type="Submit" value="Registrati" name="submit" />
    	 <input type="hidden" value="<%=varAdm%>" name="bol_admin" />
        </form>
       </td>
      </tr>
     </table>
    reg_verify.asp
    codice:
    <%
    	'Save entered username, password, name and email
    	Username = Request.Form("user")
    	Password = Request.Form("pass")
    	Nome = Request.Form("nome")
            Email = Request.Form("email")
    	is_admin = Request.Form("bol_admin")
    	
    	if (Username  = "") and (Password = "") and (Name = "") then
    		Response.Write("Compila tutti i campi!")
    	elseif (Username  = "") then
    		Response.Write("Inserisci l'Username!")
    	elseif (Password = "") then
    		Response.Write("Inserisci la password!")
    	elseif (Nome = "") then
    		Response.Write("Inserisci il Nome!")
            elseif (Email = "") then
    		Response.Write("Inserisci l'E-mail!")
    	
    	else
    	    'Build connection
    	    set conn = server.CreateObject ("ADODB.Connection")
    	    conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mapPath("database.mdb")
    
    	    'controllo che lo username non sia già presente nel database
    	    trovato=false
    	    set rs = server.CreateObject ("ADODB.Recordset")
    	    sSQL="select * from Utenti where username='" & Username & "'"
    	    rs.open sSQL,conn,3,3
    	    if not rs.eof then
    	     trovato=true
    	    end if
    		
    	    rs.close
    	    set rs = nothing
    		
    	 if not trovato then
    	      'lo username non è presente lo inserisco nel database
    	      sSQL="insert into Utenti "
    	      sSQL=sSQL & " ([Username], [Password], [Nome], Email, is_admin) "
    	      sSQL=sSQL & " values ( "
       	      sSQL=sSQL & "'" & Username & "',"
    	      sSQL=sSQL & "'" & Password & "',"
     	      sSQL=sSQL & "'" & Nome & "',"
                  sSQL=sSQL & "'" & Email & ","
                  sSQL=sSQL & "'" & is_admin & "''"
    	      sSQL=sSQL & " )"
    		  
    	      conn.execute(sSQL)
    		
    	    conn.close
    	    set conn=nothing
    	    Response.Write("Ciao  " & Name & " , la registrazione è avvenuta con successo!")
    	 else
      		Response.Write("Lo username  " & Username & " , è già presente del database!")
    	 end if
    	end if
    %>
    Vedi se funziona. Ciao.

  7. #7
    Utente di HTML.it L'avatar di Vash SD
    Registrato dal
    Sep 2006
    Messaggi
    502
    io volevo in realtà dal pannello di controllo avere un input dove inserisco l'username dellutente reigistrato normalmente. E quando faceva il login sapeva che era admin e andava in una pagina di amministrazione..!

  8. #8
    Certo. Questa è la prima fase e serve a te per registrare un nuovo Admin (senza dover necessariamente aprire il file del DB con Access).

    Adesso modificherai la pagina di accesso in questo modo:

    codice:
    <%
    errore = false
    username = trim(request.form("username"))
    password = trim(request.form("password"))
    
    username = replace(username,"'","''")
    password = replace(password,"'","''")
    
    if len(username) > 0 and len(username) > 0 then
    
      set conn = server.createObject("ADODB.Connection")
      conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mapPath("database.mdb")
    
      sql = "SELECT * FROM Utenti WHERE [username] = '" & username & "' AND [password] = '" & password & "'"
      set rs = conn.execute(sql)
    
        if rs.eof then
          errore = true
          messaggio = "Login errato!"
        else
          session("username") = rs("username")
          session("userLogged") = true
        end if
    	
    	if rs("is_admin") = true then
    		response.Redirect("option.asp?utente=admin")
    	end if
    
      rs.close
      set rs = nothing
    
      conn.close
      set conn = nothing
    
    else
    
      errore = true
      messaggio = "I campi sono obbligatori!"
    
    end if
    
    if not errore then response.redirect "index.asp"
    %>
    
      <head>
        <title>Errore: <%=messaggio%></title>
      </head>
      <body>
        <div align="center">
    	 <font color="rgb(182, 50, 20)">Errore:</font><%=messaggio%>
    	</div>
      </body>
    ...penso che basti... :master:

  9. #9
    Utente di HTML.it L'avatar di Vash SD
    Registrato dal
    Sep 2006
    Messaggi
    502
    ah capito grazie mille!

    senti ma se io invece di registrare un nuovo utente volessi solo inserire il nick così che quell'utente diventi admin invece di crearne uno nuovo?

  10. #10
    Facciamo allora un file a parte che conoscerai solo tu.
    Crea un file gestione_admin.asp con dentro questo:
    codice:
    <%@ Language=VBScript %>
    
    <% 
    Const adCmdTable = &H0002 ' Costante x permettere piena funzionalità al DB
    
    'Solo se ho gia inserito un nome, esegui lo script
    if request.QueryString("useradmin") <> "" then
    	
    	Dim connectionDB, recordSet, trovato, messaggio ' Dichiarazione var
    	
    	'Connessione al DB
    	Set connectionDB = Server.CreateObject("ADODB.Connection")
    	connectionDB.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mapPath("database.mdb")
    	trovato = FALSE
    	Set recordSet = Server.CreateObject("ADODB.Recordset")
    
    	'Apertura RS
    	recordSet.Open "Utenti", connectionDB, , 3, adCmdTable
    		
    	'Effettua la ricerca del nome selezionato
    	Do until trovato = TRUE
    		If (StrComp(request.QueryString("useradmin"), recordSet("Username"), vbTextCompare) = 0) Then
    			trovato = TRUE
    		else
    			recordSet.MoveNext
    		end if
    	loop
    	
    	'Se non è stato trovato, torna indietro
    	if trovato = FALSE then
    		response.redirect("gestione_admin.asp")
    	end if
    	
    	'Metti o togli il flag dell'admin e scrivi un messaggio
    	if recordSet("is_admin") = FALSE then
    		recordSet("is_admin") = TRUE
    		messaggio = "Permessi Admin ATTRIBUITI a: " & request.QueryString("useradmin")
    	else
    		recordSet("is_admin") = FALSE
    		messaggio = "Permessi Admin TOLTI a: " & request.QueryString("useradmin")
    	end if
    	
    	recordSet.Update 'Salva la modifica
    
    end if
    %>
    
    <form method="get" action="gestione_admin.asp">
      Conferisci o togli facoltà Admin all'utente: 
      <input type="text" name="useradmin">
      <input type="submit" value="Ok">
    </form>
    <H3><%=messaggio%></H3>
    Considerando che sto da Macintosh, e non vedrò un Pc fino a settembre, non posso provare quello sto scrivendo, quindi rispondimi se ti tira fuori qualche trano errore. :master:

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