Problema nella creazione di un area protetta!!!!

alex16578

Nuovo Utente
5 Feb 2010
2
0
0
Salve,
sto cercando di creare un area protetta sul mio sito utilizzando la seguente guida ed i seguenti script:

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.

Dopo aver creato tutto il necessario, quando provo sia in remoto che in locale, dopo aver inserito nome utente e password non vengo indirizzato alla pagina protetta ma bensì mi si apre la finestra che mi dice se voglio scaricare il file login.asp.

Da cosa dipende? Potete aiutarmi?

Ringrazio Anticipatamente

alex16578
 

Majinbu

Utente Attivo
31 Ago 2009
140
0
0
Salerno
www.zazoom.it
Ciao Alessio...il post forse è troppo esplicativo cmq
ASP viene elaborato da IIS (ad essere precisi non solo)
Hai installato IIS ?
Dove carichi pagine in remoto?
 

alex16578

Nuovo Utente
5 Feb 2010
2
0
0
Re

ciao majin,
scusa l'ignoranza... cos'è iis?

cmq carico su un hosting linux aruba di mia proprietà..
 

Majinbu

Utente Attivo
31 Ago 2009
140
0
0
Salerno
www.zazoom.it
cmq carico su un hosting linux aruba di mia proprietà..

Quindi presumo (o forse no) che in locale hai installato Apache...Web server che supporta PHP.
Per ASP il web server è IIS (generalmente installato su hosting in windows server 2003); non puoi processare pagine asp sotto hosting linux.

Forse non hai affatto idee sulle dinamiche dei linguaggi server side e ti consiglio di leggere qualche guida che già trovi su questo sito.

Dopo (se lavori sotto windows) devi installare IIS in locale...

Su server remoto devi puntare il dominio su hosting windows.
:byebye:
 
Discussioni simili
Autore Titolo Forum Risposte Data
loois Ho un problema nella creazione di un sistema di commenti in PHP PHP 11
G Problema nella creazione di un'area protetta PHP 10
S [Javascript] [HTML] problema nella stampa degli elementi della pagina Javascript 3
P doppio problema nella memorizzazione dati PHP 11
M Ipn paypal problema nella risposta PHP 1
C Problema apertura slide nella hompage HTML e CSS 0
J Problema con link nella barra di navigazione HTML e CSS 1
S Problema con 2 script nella stessa pagina Javascript 1
P problema nella stampa di table HTML e CSS 1
S Problema nella pagina di registrazione e login PHP 2
A problema nella visualizzazione file caricato tramite ftp WordPress 0
L problema nella implementare una funzione con ritorno PHP 2
Emix Problema nel concatenare jquery ed ajax nella stessa pagina Javascript 15
W Problema nella pubblicazione programmata di un articolo WordPress 1
D Problema nella validazione di un form con JQUERY ed AjAX jQuery 4
D Problema nella chiamata ad una funzione javascript da href Ajax 2
G Problema nella pagine dei risultati ricerca Wordpress WordPress 2
G problema caricamento 2 js nella stessa pagina Javascript 0
max_400 Problema apostrofo nella ricezione della variabile per poi scriverla dentro un file PHP 6
giancadeejay Intro flash,problema nella visualizzazione su sito Flash 2
F problema sintassy nella mia query MySQL 6
F problema nella connessione con mysql presente in Aruba PHP 3
Dragon Problema di caricamento swf e img nella stessa pagina Flash 8
L Problema nella visualizzazione HTML e CSS 0
K problema nella formattazione del valore di una variabile PHP 0
T PROBLEMA CON SESSIONI PHP 3
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
T problema data 30/11/-1 PHP 0
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Y Problema incolonnamento tabella PHP 7
S problema salvataggio immagini Photoshop 0
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
D problema php mysql PHP 1
D problema php mysql PHP 1
M Problema Wi-Fi Linux Linux e Software 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
Daniele_Carrara Problema Aperture Mailup Email Marketing 5
F PROBLEMA ACCESSO INSTAGRAM Discussioni Varie 2
R Problema connessione db PHP 7

Discussioni simili