3.122 messaggi dal 16 maggio 2002
Il file global.asa è un file speciale che va posto nella root del tuo sito web. Contiene istruzioni da eseguire all'avvio dell'applicazione, al termine o all'avvio e termine di nuove sessioni. Per dettagli ti consiglio di leggere questo script.
Poi quell'esempio che ti ho riportato è un po' "grossolano", ma può rappresentare un buon punto di partenza. Con qualche ritocco potrebbe già andare bene. Ad esempio io non metterei l'oggetto connection in una variabile di applicazione (questione di opinioni); inoltre nella query sql devi prestare molta attenzione all'eventuale presenza di apici singoli nei valori inseriti dall'utente. Nel linguaggio sql, gli apici ' rappresentano i delimitatori di stringhe. Per indicare che nella stessa stringa ci dev'essere un apice, deve essere applicata una speciale formattazione.
Ad esempio in Access gli apici singoli vanno raddoppiati, mentre con MySql vanno preceduti dal carattere di escape \.
Per questo solitamente si crea una funzione che accetta in ingresso il parametro stringa con cui componi la query e che in uscita te lo restituisce formattato nel modo che ti ho appena descritto.
Per Access
function SQLString(str)
SQLString = Replace(str, "'", "''")
end function

Per MySql
function SQLString(str)
SQLString = Replace(str, "'", "\'")
end function

Comunque, l'unico modo per imparare è fare pratica. Magari prova a leggere anche il tutorial di sql che trovi sempre su html.it, quello è molto utile per comporre query di interrogazione dei database.

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!
Scusami tanto, ammetto che dovrei avere più pazienza e insistere di più, ma non vorrei sapere dov'é il mio errore prima di sbattere la testa contro il muro più e più volte. Mi da questo errore:

Select id, login, password FROM tbl_login WHERE login ='ciccio' AND password = 'cicci'

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

/pannello/login.asp, line 33

Ho messo il global.asa nella cartella principale del sito:

<script LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
set conn = Server.CreateObject("ADODB.Connection")
conn.provider="Microsoft.Jet.OLEDB.4.0"
conn.Open(server.mappath("../mdb-database/archivio.mdb"))
End Sub

Sub Application_OnEnd
End Sub

Sub Session_OnStart
Session("login") = False
End Sub

Sub Session_OnEnd
End Sub
</script>

e il file login.asp dentro la cartella "pannello":

<%
Option Explicit
'--------------------------------------------------------
'Purpose: Login
'Date: 07 April 2001
'Commenti:
'--------------------------------------------------------
Response.Buffer = True
Dim objConn, strConn, objRs, strsql
Dim submitted, login, password
%>
<html>
<head>
<title>Login</title>
</head>
<body bgcolor=powderblue>

<%
submitted = Request.Querystring("submitted")
If submitted then

strConn = Application("dbconn")

login = Request.Form("login")
password = Request.Form("password")

strsql = "Select id, login, password FROM tbl_login "
strsql = strsql & "WHERE login ='" & login & "' AND password = '" & password & "'"

response.write strsql & "<br>"

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open strConn
set objRs = objConn.Execute(strsql)

If objRs.EOF then
'Non e' valido, mandalo indietro
response.redirect "Login.asp"
Else
'e' valido, fallo entrare
session("login") = True
objRs.close
Set objRs = Nothing
response.redirect "pannello.htm"
end if
else
'show the form
%>
hello
<div align="center">
<form action="login.asp?submitted=true" method="post">
<table align="center" cellspacing="0" cellpadding="5" border="1" bordercolor="midnightblue" bgcolor="ivory" width="400">
<tr>
<th><font color=firebrick size=+2><b>Solo chi voglio io!</b></font></th>
</tr>
<tr>
<td align="center" bgcolor="azure">
<%
if session("login") and Submitted then
response.redirect "login.asp"
else
response.write "<br><br> Per favore, entra login/password. <br><br>"
end if
%>
<table>
<tr>
<td class=event>Login:</td>
<td><input type="text" name="Login" size="10" maxlength="30"></td>
</tr>
<tr>
<td class=event>Password:</td>
<td><input type="password" name="Password" size="10" maxlength="12"></td>
</tr>
</table>
<br>
<input type="submit" value="Submit">
<input type="reset" value="Cancel" Onclick="Javascript:history.go(-1)">
</td>
</tr>
</table>
</form>
</div>

</body>
</html>

<%
end if

Response.end
Response.Clear
%>


COSA SBAGLIO?????? Grazie!!!!!
3.122 messaggi dal 16 maggio 2002
Nel global.asa hai definito un oggetto connection, ma se poi non lo memorizzi nella variabile application che richiamerai dopo, non te ne fai di niente.
Perciò nel global.asa usa questa subroutine corretta:

Sub Application_OnStart
set conn = Server.CreateObject("ADODB.Connection")
conn.provider="Microsoft.Jet.OLEDB.4.0"
conn.Open(server.mappath("../mdb-database/archivio.mdb"))
Set Application("dbconn") = conn
End Sub

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!
Non funziona ancora. Va in una pagina che non esiste

http://www.architetti-online.it/pannello/login.asp?submitted=true
3.122 messaggi dal 16 maggio 2002
L'errore sta qui:

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open strConn

La connessione l'hai già nella variabile di applicazione (non la stringa, ma proprio l'oggetto connection), ed è anche aperta, perciò non c'è bisogno di crearne e aprirne un'altra.
Sostituisci a quelle due righe questa

Set objConn = Application("dbconn")

e togli la riga

strConn = Application("dbconn")

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!
Ancora non va!! :-< Ti rimetto i files che ho modificato con le tue indicazioni.
login.asp:

<%
Option Explicit
'--------------------------------------------------------
'Purpose: Login
'Date: 07 April 2001
'Commenti:
'--------------------------------------------------------
Response.Buffer = True
Dim objConn, strConn, objRs, strsql
Dim submitted, login, password
%>
<html>
<head>
<title>Login</title>
</head>
<body bgcolor=powderblue>

<%
submitted = Request.Querystring("submitted")
If submitted then

login = Request.Form("login")
password = Request.Form("password")

strsql = "Select id, login, password FROM tbl_login "
strsql = strsql & "WHERE login ='" & login & "' AND password = '" & password & "'"

response.write strsql & "<br>"

Set objConn = Application("dbconn")
set objRs = objConn.Execute(strsql)

If objRs.EOF then
'Non e' valido, mandalo indietro
response.redirect "login.asp"
Else
'e' valido, fallo entrare
session("login") = True
objRs.close
Set objRs = Nothing
response.redirect "pannello.htm"
end if
else
'show the form
%>
hello
<div align="center">
<form action="login.asp?submitted=true" method="post">
<table align="center" cellspacing="0" cellpadding="5" border="1" bordercolor="midnightblue" bgcolor="ivory" width="400">
<tr>
<th><font color=firebrick size=+2><b>Solo chi voglio io!</b></font></th>
</tr>
<tr>
<td align="center" bgcolor="azure">
<%
if session("login") and Submitted then
response.redirect "login.asp"
else
response.write "<br><br> Per favore, entra login/password. <br><br>"
end if
%>
<table>
<tr>
<td class=event>Login:</td>
<td><input type="text" name="Login" size="10" maxlength="30"></td>
</tr>
<tr>
<td class=event>Password:</td>
<td><input type="password" name="Password" size="10" maxlength="12"></td>
</tr>
</table>
<br>
<input type="submit" value="Submit">
<input type="reset" value="Cancel" Onclick="Javascript:history.go(-1)">
</td>
</tr>
</table>
</form>
</div>

</body>
</html>

<%
end if

Response.end
Response.Clear
%>



e global.asa:


<script LANGUAGE="VBScript" RUNAT="Server">

Sub Application_OnStart
set conn = Server.CreateObject("ADODB.Connection")
conn.provider="Microsoft.Jet.OLEDB.4.0"
conn.Open(server.mappath("../mdb-database/archivio.mdb"))
Set Application("dbconn") = conn
End Sub

Sub Application_OnEnd
End Sub

Sub Session_OnStart
Session("login") = False
End Sub

Sub Session_OnEnd
End Sub
</script>

GRAZIE!!!!!
Scusa, mi sono accorto di una cosa. Nel global.asa io avevo messo ../mdb-database/archivio.mdb, ma in realtà deve essere mdb-database/archivio.mdb Giusto?? Ho fatto la modifica e ora mi dice se vado nella pagina www.architetti-online.it/pannello/login.asp

Microsoft JET Database Engine error '80004005'

'D:\Inetpub\webs\architetti-onlineit\pannello\mdb-database\archivio.mdb' is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides.

//global.asa, line 6
3.122 messaggi dal 16 maggio 2002
Ecco, allora a sto punto è sbagliato il percorso nel global.asa. Prova così:

Sub Application_OnStart
set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/mdb-database/archivio.mdb") & ";"
Set Application("dbconn") = conn
End Sub

Se ancora non va, allora piuttosto scrivi una sub che ti istanzia e apre la connessione; personalmente non ho mai definito e aperto una connessione nel global.asa, preferisco farlo in ogni pagina.

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.