[ASP] Login page in de juist frame laden

Pagina: 1
Acties:

  • Patrick01
  • Registratie: Oktober 2005
  • Laatst online: 19-12-2021
Het probleem:
Ik ben met een login pagina bezig. De index bestaat uit frames. Nu is het de bedoeling dat als er ingelogd is met een geldig acount dan moet de index pagina geladen worden waarvan de target="_parent" is. Als er met een verkeerd paswoord of gebruikers naam ingelogd wordt of de velden zijn leeg dan moet een bepaalde pagina in Mainframe geladen worden.
Nu ben ik al een tijdje bezig geweest met het zoeken en kijken wat ik verkeerd doe. meschien kunnen jullie helpen.

Het probleem is nu dat het altijd MM_target="mainFrame" uitvoert terwijl hij bij een geldig login
MM_target="_parent" moet uitvoeren.


Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<%
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="User_ID"
  MM_redirectLoginSuccess="/index.html"
  MM_redirectLoginFailed="/faillogin.html"
  MM_flag="ADODB.Recordset"
  set MM_rsUser = Server.CreateObject(MM_flag)
  MM_rsUser.ActiveConnection = MM_data_webwinkel_STRING
  MM_rsUser.Source = "SELECT Email, User_Password"
  If MM_fldUserAuthorization <> "" Then MM_rsUser.Source = MM_rsUser.Source & "," & MM_fldUserAuthorization
  MM_rsUser.Source = MM_rsUser.Source & " FROM dbo.User_tabel WHERE Email='" & Replace(MM_valUsername,"'","''") &"' AND User_Password='" & Replace(Request.Form("PasswordField"),"'","''") & "'"
  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 true 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
%>

<%
MM_authorizedUsers=""
MM_target="mainFrame"
If Session("MM_Username") <> "" Then
  If (true Or CStr(Session("MM_UserAuthorization"))="") Or _
         (InStr(1,MM_authorizedUsers,Session("MM_UserAuthorization"))>=1) Then
    MM_target="_parent"
  End If
End If
%>


Mvg

[ Voor 0% gewijzigd door RobIII op 27-11-2006 21:27 . Reden: I.p.v. "VBScript" de "vb" versie van de code tag gebruikt. Syntax highlighting FTW \O/ ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • PhysicsRules
  • Registratie: Februari 2002
  • Laatst online: 22-12-2025

PhysicsRules

Dux: Linux voor Eenden

In de code die je nu gebruikt gaan zo te zien twee dingen fout.

Ten eerste wordt MM_target niet gebruikt. De target zul je ergens aan de Response moeten doorgeven. Dat gebeurd nu niet (Response.target = MM_target, oid).

Daarnaast stel je de target in nadat de redirect heeft plaatsgevonden.

  • Patrick01
  • Registratie: Oktober 2005
  • Laatst online: 19-12-2021
MM_target wordt gebruikt in een Form actie. Dat had ik voor het gemak maar achterwegen gelaten.
Maar de oplosing van jou werkt niet.

[ Voor 17% gewijzigd door Patrick01 op 27-11-2006 19:56 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
1) Wat doe je in hemelsnaam op regel 27? "...and true"? Lijkt me redelijk nutteloos. En op regel 42 doe je het weer?
2) Die replace(blah,"'","''"), kun je daar geen functie van maken? Leest wel zo makkelijk. Of better yet: gebruik parametrized queries.
3) Wat doe je op regel 36/38? Heb je daar iets weggelaten?
4) Die .BOF check heb ik nooit begrepen, dat komt nooit voor als je gewoon een recordset ophaalt; EOF is ook true als je recordset 0 records bevat
5) Response.Target bestaat niet in ASP. Je zult iets als dit moeten doen:
Visual Basic:
1
response.write "<script type=""text/javascript"">top.location.href='/index.html';</script>"

Daarmee output je een stukje javascript waardoor je browser in "top" (of parent als je het script een tikkie aanpast) een URL laadt.

Verder: is dit je eigen code, ergens "geleend" of komt dit rechtstreeks uit Dreamweaver ofzo? (ik vermoed aan de MM_ prefixes te zien dat het om het laatste gaat) Wat mij betreft is deze code zo goed als onleesbaar, nogal vatbaar voor SQL injection, en de "sanity checks" zijn ook nutteloos. Een gebruiker met username " " (spatie dus) omzeilt je check op regel 5 al.

En dan heb ik het nog niet gehad over variabelen die niet gedeclareerd worden (option explicit) of die niet eens gebruikt worden (LoginAction, authorizedUsers, target). En waarom een "flag" gebruiken als je net zo goed meteen een Server.CreateObject("ADODB.Recordset") kunt aanmaken? "flag" dekt de lading niet en wordt verder nergens gebruikt. De var "target" is zowieso enkel een string en wordt verder nergens gebruikt; hoe verwacht je dat je browser weet waar 'ie naar toe moet redirecten?

Als deze rommel rechtstreeks uit een of andere MM tool komt dan weet je nu waarom ik daar altijd zo ver van uit de buurt blijf ;)

[ Voor 39% gewijzigd door RobIII op 27-11-2006 21:43 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • PhysicsRules
  • Registratie: Februari 2002
  • Laatst online: 22-12-2025

PhysicsRules

Dux: Linux voor Eenden

@RobIII:
Dit is autogenerated Dreamweaver code, dus wees niet te streng voor TS ;), ik ben ook ooit zo begonnen :)

Maareh, Patrick01: Drop the bl***y frames!!! RobIII heeft natuurlijk gelijk, je kunt vanuit Server-side code geen invloed hebben op de target-frames, dat is iets dat client-side gebeurd. Als je toch frames wilt blijven gebruiken kun je de pagina beter zo opzetten dat na de autenthicatie de gehele frameset opnieuw geladen wordt (eventueel de index.html dynamisch genereren).
Pagina: 1