CREARE UN AREA PROTETTA CON ASP SU WINDOWS SERVER 2003 (con database MySQL)

Crazy Horse

Nuovo Utente
30 Nov 2010
11
0
0
Salve, mi trovo a dover fare un area protetta su un sito, per farlo ho trovato online un tutorial che usa Asp sfruttando file .mdb, ora, io ho MySql sul dominio e vorrei usarlo per creare la tabella che mi serve (contenente nomeutente e password), è possibile farlo? Se si, qualcuno può aiutarmi a modificare il codice? Lascio qua sotto la spiegazione del tutorial:

CREARE IL DATABASE

Per prima cosa è necessario creare il Database contentente nome utente e password di tutti coloro a cui è consentito l'accesso nell'area riservata. Creiamo un database chiamato utenti.mdb; apriamolo e creiamo (tramite la visualizzazione struttura) una tabella che chiameremo Utenti che conterrà 3 campi:

ID: sarà la chiave primaria della tabella
nomeutente: conterrà il nome di ogni utente
password: conterrà la password relativa ad ogni nome utente
Ecco mostrato ciò che dovreste ottenere:


Figura 1: Struttura del Database.

A questo punto inseriamo dei nomi utente e delle password a nostra scelta; tali dati ci permetteranno di testare successivamente lo script che stiamo realizzando.
Questo primo passo vi sarà utile per prendere confidenza con la creazione dei database; nel caso siate già esperti o abbiate dei problemi nel realizzare il database di supporto a questo articolo, potete scaricarlo direttamente cliccando qui (realizzato con Access2000).

CREARE LA HOME PAGE

Supponiamo di avere la nostra home page che chiameremo index.asp, con tutti i suoi contenuti e con, nella posizione in cui preferite, il form che permette l'accesso all'area riservata; per motivi di semplicità e chiarezza, nella homepage di questo esempio visualizzeremo solo il form di accesso:

<HTML>
<HEAD>
<TITLE>Autenticazione utente tramite password</TITLE>
</HEAD>
<BODY BGCOLOR=#BBBBFF>
<BR><BR><BR><BR><BR>
<FORM ACTION="login.asp" METHOD="POST">
<TABLE ALIGN=CENTER BORDER=0 BGCOLOR=#000000>
<TR BGCOLOR=#EEEEEE>
<TD WIDTH=150 ALIGN=CENTER>NOME UTENTE</td>
<TD>
<INPUT TYPE=TEXT NAME="nome_utente" SIZE=20>
</td>
</TR>
<TR BGCOLOR=#EEEEEE>
<TD WIDTH=150 ALIGN=CENTER>PASSWORD</td>
<TD>
<INPUT TYPE=PASSWORD NAME="password" SIZE=20>
</TD>
</TR>
<TR BGCOLOR=#EEEEEE>
<TD HEIGHT=30 COLSPAN=2 ALIGN=CENTER>
<INPUT TYPE=SUBMIT NAME="show" VALUE="LOGIN">
</TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>

Come potete notare, il form contiene un campo per l'immissione del nomeutente, uno per l'immissione della password, e un bottone per inviare i dati alla pagina login.asp che effettuerà il controllo sui dati inseriti.

PAGINA DI AUTENTICAZIONE

E' ora il momento cruciale dell'articolo, cioè la creazione della pagina che controlla nome utente e password e consente o meno l'accesso all'area riservata. Creiamo un file che chiemeremo login.asp, eccone il contenuto:

<%
Dim nome_ut
Dim pass
nome_ut = Replace(Request.Form("nome_utente"), "'", "''")
pass = Replace(Request.Form("password"), "'", "''")

Dim cn
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("utenti.mdb")
Dim sql
sql = "SELECT ID FROM Utenti WHERE NOMEUTENTE='" &nome_ut&_
"' AND PASSWORD='" &pass& "'"
Dim rs
Set rs = cn.Execute(sql)

Dim autenticato
if rs.eof then
autenticato = false
else
autenticato = true
end if
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing

if autenticato = true then
Session("Autenticato") = "OK"
Response.Redirect("riservato.asp")
else
Response.Redirect("index.asp")
end if
%>

Lo script login.asp raccoglie nome_utente e password provenienti dalla form della home page e li memorizza nelle variabili nome_ut e pass. Da notare che gli eventuali apici (') immessi nella form vengono sostituiti con un doppio apice (''); questo è un passaggio molto importante e necessario se si vogliono evitare spiacevoli inconvenienti nella regolare esecuzione dello script; gli apici infatti possono causare degli errori nella corretta composizione della stringa sql che utilizzeremo per interrogare il database.
Successivamente viene composta la stringa sql, che cerca nel database un record che abbia nome utente e password corrispondenti a quelli immessi nella form.
Se il recordset risultante è vuoto, significa che nel database non è stata trovata la corrispondenza delle due variabili e quindi l'utente non è autenticato; nel caso contrario, l'utente è presente nel database, ed ha inserito la password corretta.
Nel primo caso, il navigatore viene reindirizzato alla home page; nel secondo caso, invece, l'utente viene inviato alla pagina riservato.asp e, punto molto importante, viene creata una variabile di sessione chiamata Autenticato, a cui viene assegnata la stringa "OK". Questa variabile è importante, in quanto ad ogni accesso ad una pagina dell'area riservata (durante la medesima sessione), verrà verificata la sua presenza; nel caso essa non sia presente o non abbia valore "OK", il navigatore verrà reindirizzato alla pagina index.asp. Tutto ciò può apparire una futile precauzione, ma supponiamo che un navigatore "malintenzionato" venga a sapere che la pagina riservata del nostro sito ha come URL:

http://www.miosito.com/riservato.asp

A questo punto, per scavalcare la protezione, gli basterebbe andare direttamente a tale URL senza passare attraverso la home page del nostro sito, e la nostra "barriera" risulterebbe perfettamente inutile. Controllando invece, ad ogni pagina dell'area riservata, la presenza della variabile di sessione Autenticato, la protezione non potrà essere oltrepassata.
In seguito è riportato il codice di riservato.asp:

<%
if Session("Autenticato")<>"OK" then
Response.Redirect("index.asp")
end if
%>
<HTML>
<HEAD>
<TITLE>Area riservata</TITLE>
</HEAD>
<BODY BGCOLOR=#BBBBFF>
<BR><BR><BR><BR><BR>
<DIV ALIGN=CENTER><H1>PAGINA RISERVATA</H1><BR>
<H2>UTENTE AUTENTICATO</H2><BR></DIV>
</BODY>
</HTML>

Questa sarà la sezione riservata del vostro sito; nella parte iniziale viene verificata la presenza della variabile di sessione che indica se l'utente ha effettuato il login o meno. Il resto della pagina potrà essere modificato secondo le vostre esigenze.
 

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
552
13
18
Italy
www.riciclarte.info
Non uso MySQL, probabilmente lo script da te descritto funziona con quel tipo di dataBase.

Il tuo SQL è munito di interfaccia ove poter creare il DB manualmente o hai bisogno di una query?

Il server web ove desideri utilizzare lo script supporta le Active Server Pages (ASP)?
 

Crazy Horse

Nuovo Utente
30 Nov 2010
11
0
0
Il mio database è dotato di interfaccia dove poter creare il DB manualmente, ne ho 4 già pronti di Database già creati...e il server ha ASP, solo che la cosa che mi mette il dubbio è che nel codice ho visto che compare:

cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("utenti.mdb")

e utenti.mdb e nn capisco se è il nome per intero del database o se .mdb è proprio il formato...
 

Crazy Horse

Nuovo Utente
30 Nov 2010
11
0
0
Ho provato a sostituire.

Ma mi dà il seguente errore ->

Microsoft VBScript compilation error '800a0408'

Invalid character

/Area_Privata/login.asp, line 9

Driver={mySQL}; Server=indserver; Database=nomedb; Uid=nomeid; Pwd=pass;

a Server cosa devo mettere di preciso, io avevo messo l'host (indirizzo numerico) Chiedo scusa ma sono abbastanza noob e non so molte cose ^^''
 

Majinbu

Utente Attivo
31 Ago 2009
140
0
0
Salerno
www.zazoom.it
Esatto, devi inserire il nome dell'host mysql a cui il server devi connettersi.
Ecco la stringa...copia questa e cambia solo i dati : 1-2-3-4
Puoi anche informarti sul driver mysql installato sul web server che usi in hosting.

Codice:
"DRIVER={MySQL ODBC 3.51 Driver};SERVER=1-nome_hostmysql_provider_estensione;PORT=3306;DATABASE=2-nome_db; USER=3-tuo_username;PASSWORD=4-tua_password9;OPTION=3;"
:byebye:
 
Ultima modifica:

Crazy Horse

Nuovo Utente
30 Nov 2010
11
0
0
Majinbu, ho provato ma mi da sempre l'errore, metto sotto il codice della pagina del login

Codice:
<%
Dim nome_ut
Dim pass
nome_ut = Replace(Request.Form("nome_utente"), "'", "''")
pass = Replace(Request.Form("password"), "'", "''")

Dim cn
Set cn = Server.CreateObject("ADODB.Connection")

DRIVER={MySQL ODBC 3.51 Driver}; SERVER=000.000.000.000; PORT=3306; DATABASE=mio_nomedb; USER=mio_user; PASSWORD=mia_pass;OPTION=3;
Dim sql
sql = "SELECT ID FROM Utenti WHERE NOMEUTENTE='" &nome_ut&_
"' AND PASSWORD='" &pass& "'"
Dim rs
Set rs = cn.Execute(sql)

Dim autenticato
if rs.eof then
autenticato = false
else
autenticato = true
end if
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing

if autenticato = true then
Session("Autenticato") = "OK"
Response.Redirect("riservato.asp")
else
Response.Redirect("index.asp")
end if
%>
 

Majinbu

Utente Attivo
31 Ago 2009
140
0
0
Salerno
www.zazoom.it
Devi aprire la connessione!
Codice:
<%
Dim nome_ut
Dim pass
nome_ut = Replace(Request.Form("nome_utente"), "'", "''")
pass = Replace(Request.Form("password"), "'", "''")

Dim cn
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open  "DRIVER={MySQL ODBC 3.51 Driver};SERVER=000.000.000.000;PORT=3306;DATABASE=mio_nomedb;USER=mio_user;PASSWORD=mia_pass;OPTION=3;"
Dim sql
sql = "SELECT ID FROM Utenti WHERE NOMEUTENTE='"& nome_ut &"' AND PASSWORD='" &pass& "' "
Dim rs
Set rs = cn.Execute(sql)

Dim autenticato
if rs.eof then
autenticato = false
else
autenticato = true
end if
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing

if autenticato = true then
Session("Autenticato") = "OK"
Response.Redirect("riservato.asp")
else
Response.Redirect("index.asp")
end if
%>

Riporta anche l'eventuale errore che restituisce.
 
Ultima modifica:

Crazy Horse

Nuovo Utente
30 Nov 2010
11
0
0
chiedo scusa, volevo sapere se è possibile far reindirizzare gli accessi a pagine diverse a seconda della password e dell'id immesse...
 

Majinbu

Utente Attivo
31 Ago 2009
140
0
0
Salerno
www.zazoom.it
Certo che puoi! Ho crei tante condizioni, che a secondo dell'utente, reindirizzano a determinate pagine...

if rs("psw")="pippone" then
response.redirect"pagina-di-pippone.asp"
elseif.....

O inserisci direttamente nella riga del db la pagina e quindi...

response.redirect rs("pagina")

Puoi fare in tanti modi...dipende da quanti utenti hai già e da quanti diversi redirect dovresti fare.
 

Crazy Horse

Nuovo Utente
30 Nov 2010
11
0
0
allora, ho provato ma non mi trova la pagina, penso che il problema sia con la chiusura del database, visto che l'if sta dopo la chiusura del db...devo caricare prima il contenuto del campo del db su una variabile e poi fare il confronto?

qua sotto ho messo il codice

Codice:
<%
Dim nome_ut
Dim pass
nome_ut = Replace(Request.Form("nome_utente"), "'", "''")
pass = Replace(Request.Form("password"), "'", "''")

Dim cn
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open ="DRIVER={MySQL ODBC 3.51 Driver}; SERVER=serv; PORT=3306; DATABASE=dbname; USER=username; PASSWORD=passdb;OPTION=3;"
Dim sql
sql = "SELECT ID FROM Utenti WHERE NOMEUTENTE='" &nome_ut&_
"' AND PASSWORD='" &pass& "'" 
Dim rs
Set rs = cn.Execute(sql)

Dim autenticato
Dim pagina
if rs.eof then
autenticato = false
else
autenticato = true 
pagina = rs("indirizzo")
end if
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing

if autenticato = true then
Session("Autenticato") = "OK"
Response.Redirect (pagina)
else
Response.Redirect("area_privata.asp")
end if
%>
 
Ultima modifica:

Crazy Horse

Nuovo Utente
30 Nov 2010
11
0
0
Devo cambiare la query? ma non prende tutti i dati dalla tabella? c'è l'*...non dovrebbe prendere tutti i dati della tabella dove id e pass corrispondono?
 

Majinbu

Utente Attivo
31 Ago 2009
140
0
0
Salerno
www.zazoom.it
con
Codice:
"SELECT ID FROM Utenti WHERE NOMEUTENTE='"& nome_ut &"' AND PASSWORD='" &pass& "' "
gli chiedi : seleziona la colonna ID dalla tabella Utenti dove NOMEUTENTE è = a........

quindi se vuoi leggere la colonna "indirizzo" non puoi :mavieni::mavieni:

con
Codice:
"SELECT * FROM Utenti WHERE NOMEUTENTE='"& nome_ut &"' AND PASSWORD='" &pass& "' "

gli chiedi di selezionare tutte le colonne della tabella Utenti dove.......quindi puoi leggere la colonna "indirizzi" :book:
 

Crazy Horse

Nuovo Utente
30 Nov 2010
11
0
0
ok, quindi se io scrivo ->

Dim pagina
pagina = rs("indirizzo")

mi deve mettere il contenuto di indirizzo nella variabile pagina...giusto?
 
Discussioni simili
Autore Titolo Forum Risposte Data
P Creare area protetta PHP 6
A creare area protetta su sito Classic ASP 2
F [PHP] Creare un'area web riservata PHP 13
Giuliana Signorello WP: Creare un booking multi-struttura con area agenzie annessa WordPress 0
J Creare file html da un form in area riservata PHP 9
M Come creare un area riservata PHP 4
R Area di testo: creare un collegamento esterno selezionando un parola. HTML e CSS 2
D Creare Area RiservaTA PHP 8
R Creare un'area di testo scorrevole HTML e CSS 3
B creare un'area riservata PHP 1
A Creare area accesso/registrazione utenti Classic ASP 0
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
F Creare elementi html con javascript Javascript 4
Shyson Modificare codice e creare link PHP 0
Cosina Creare bottone delete in form upload PHP 5
Cosina Creare bottone delete in form upload PHP 1
M Creare un campo input select quantità di un numero intero prelevato dal db PHP 3
L Creare una forma geometrica Photoshop 1
M [Cerco] aiutanti per creare sito Offerte e Richieste di Lavoro e/o Collaborazione 8
S Libreria PHP per creare file dwg o dxf PHP 0
R Come creare sistema Add to homescreen PHP 3
L Creare un countdown con giorno specifico della settimana PHP 3
W Creare link di una dato Classic ASP 0
W creare file .jar Java 2
M Creare con il Vb 2010 Il Classico Notes di Windows Vista Visual Basic 1
MarcoGrazia Creare una password Snippet Javascript 0
J creare pagina php di prenotazione PHP 5
A Creare un modulo di ricerca avanzata con dreamweaver HTML e CSS 0
INTEROPERABILITY Sviluppatrice/formatrice creare APP Offerte e Richieste di Lavoro e/o Collaborazione 0
L Creare una pagina pre-home WordPress 1
G Creare side-bar non visibile da dispositivi mobile HTML e CSS 0
L creare oggetti da una classe tramite un form Javascript 0
Web93 CREARE SITO WEB COMICS CON WORDPRESS WordPress 0
maxnegri Contare sessioni aperte e creare condizione PHP 1
A Come creare pulsante donazione PayPal HTML e CSS 5
L [CERCO] Creare blog su WordPress con tema Divi Offerte e Richieste di Lavoro e/o Collaborazione 3
F Creare un set di date a seconda del frazionamento scelto da inserire in MySQL PHP 6
R [Photoshop] Creare Azione Photoshop 1
F [PHP] creare tabella e tasto cerca PHP 3
A Creare con Javascript un percorso all'interno di uno spazio Javascript 0
B [PHP] Creare PDF dopo inserimento dati form PHP 4
A [HTML] Creare sito web per eLearnig HTML e CSS 2
R Bootstrap 4 - creare una finestra di testo responsive sopra un Carousel jQuery 1
Spenalzo Creare tabelle multiple con Access via VBA MS Access 2
R [PHP] Creare sistema random PHP 3
D [PHP] Consigli su come creare form PHP 1
I Creare Qsl radioamatore con testo editabile Presentati al Forum 1
T [PHP] Creare Honeypot per form contatti PHP 10
S [PHP] Creare collegamento filtri di ricerca al database PHP 6
Z Creare VirtualHost Apache2 con PHP? Programmazione 0

Discussioni simili