ciao sono giorni che cerco di risolvere il problema e mems mi ha aiutato, ora però proprio perchè non è così semplice per me ho deciso di provare a risolvere il problema sfruttando il programma dw, croce e delizia, per un neofita va bene poi quando il neofita crede di sapere tutto crolla dal palco...
ho creato una pagina chiamata webservice.asp in cui effettuo il login, tra le cose ho creao una variabile di sessione per tener traccia dell'utente e nel contempo ho creato una restrizione per UserGroup. il codice è il seguente:
da questa pagina posso così dirigere le persone con una autorizzazione di admin ad una pagina chiamata login.asp (per ora provvisoria) e in caso autenticazione errata come admin il carooo dw spedisce ad una pagina chiamata user.asp.codice:<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <% ' *** Validate request to log in to this site. MM_LoginAction = Request.ServerVariables("URL") If Request.QueryString<>"" Then MM_LoginAction = MM_LoginAction + "?" + Server.HTMLEncode(Request.QueryString) MM_valUsername=CStr(Request.Form("UserName")) If MM_valUsername <> "" Then MM_fldUserAuthorization="UserGroup" MM_redirectLoginSuccess="login.asp" MM_redirectLoginFailed="user.asp" MM_flag="ADODB.Recordset" set MM_rsUser = Server.CreateObject(MM_flag) MM_rsUser.ActiveConnection = MM_aaw_STRING MM_rsUser.Source = "SELECT UserName, Password" If MM_fldUserAuthorization <> "" Then MM_rsUser.Source = MM_rsUser.Source & "," & MM_fldUserAuthorization MM_rsUser.Source = MM_rsUser.Source & " FROM tblLogin WHERE UserName='" & Replace(MM_valUsername,"'","''") &"' AND Password='" & Replace(Request.Form("Password"),"'","''") & "'" MM_rsUser.CursorType = 0 MM_rsUser.CursorLocation = 2 MM_rsUser.LockType = 3 MM_rsUser.Open If Not MM_rsUser.EOF Or Not MM_rsUser.BOF Then ' username and password match - this is a valid user Session("MM_Username") = MM_valUsername If (MM_fldUserAuthorization <> "") Then Session("MM_UserAuthorization") = CStr(MM_rsUser.Fields.Item(MM_fldUserAuthorization).Value) Else Session("MM_UserAuthorization") = "" End If if CStr(Request.QueryString("accessdenied")) <> "" And false Then MM_redirectLoginSuccess = Request.QueryString("accessdenied") End If MM_rsUser.Close Response.Redirect(MM_redirectLoginSuccess) End If MM_rsUser.Close Response.Redirect(MM_redirectLoginFailed) End If %>
naturalmente la pagina logini.asp funziona...strano fin qui mi sento bravo, fa tutto lui...
problema con la pagina user.asp...
qui si accede se una persona è user o visitor avendo creato la variabile di sessione ho pensato funziona tutto... invece no!codice:<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <% ' *** Restrict Access To Page: Grant or deny access to this page MM_authorizedUsers="user,visitor" MM_authFailedURL="WebService.asp" MM_grantAccess=false If Session("MM_Username") <> "" Then If (false Or CStr(Session("MM_UserAuthorization"))="") Or _ (InStr(1,MM_authorizedUsers,Session("MM_UserAuthorization"))>=1) Then MM_grantAccess = true End If End If If Not MM_grantAccess Then MM_qsChar = "?" If (InStr(1,MM_authFailedURL,"?") >= 1) Then MM_qsChar = "&" MM_referrer = Request.ServerVariables("URL") if (Len(Request.QueryString()) > 0) Then MM_referrer = MM_referrer & "?" & Request.QueryString() MM_authFailedURL = MM_authFailedURL & MM_qsChar & "accessdenied=" & Server.URLEncode(MM_referrer) Response.Redirect(MM_authFailedURL) End If %> <% Dim Recordset1__MMColParam Recordset1__MMColParam = "1" If (Session("IdUserName") <> "") Then Recordset1__MMColParam = Session("IdUserName") End If %> <% Dim Recordset1 Dim Recordset1_numRows Set Recordset1 = Server.CreateObject("ADODB.Recordset") Recordset1.ActiveConnection = MM_aaw_STRING Recordset1.Source = "SELECT * FROM tblDati WHERE IdUserName = '" + Replace(Recordset1__MMColParam, "'", "''") + "'" Recordset1.CursorType = 0 Recordset1.CursorLocation = 2 Recordset1.LockType = 1 Recordset1.Open() Recordset1_numRows = 0 %>
nella pagina ho scritto una bellissima frase tipo:
Benvenuto: <%= Session("MM_Username") %>!
questa la vedo e se faccio la prova nella sezione test quando uno prova a vedere se tutto funuziona su dw nel momento in cui scrivo il nome dell'utente i dati si vedono, poi se però nella pagina richiamo:
<%=(Recordset1.Fields.Item("pianta").Value)%>
non è altro che un campo della tabella tblDati si pianta alla stessa riga in cui lo inserisco.
l'errore è:
Tipo di errore:
ADODB.Field (0x800A0BCD)
Il record corrente corrisponde all'inizio o alla fine del file oppure è stato eliminato. Per eseguire l'operazione richiesta è necessario disporre di un record corrente.
/aaw/Service/user.asp, line 103
Tipo di browser:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
Pagina:
che fare ora?
Grazie spero di esser stato abbastanza chiaro nell'esposizione del problema...

Rispondi quotando