Avatar billede bobbedude Nybegynder
20. juli 2001 - 10:33 Der er 23 kommentarer og
1 løsning

Login igen igen

Det jeg leder efter er et script der kan sende en bruger videre til en bestemt side afhængig af hvilket navn han har logget ind med. Det er til et statistik modul og der er ca 70 bruger de skal sendes til hver deres afdeling når de logger på.
Der skal være et lille <% har han lov til at være her %> script i toppen af alle siderne under det dir kunden har logget ind under så man ikke bare kan skrive en URL der ryger forbi login siden.
Avatar billede webbe Nybegynder
20. juli 2001 - 10:36 #1
Det mest logiske ville være at du i en tabel der indeholder brugeroplysninger angiver nogle retteigheder.

Når så brugerne logger ind skal disse rettigheder tjekkes og alt afhængig af hvilke rettigheder brugeren har får brugeren adgang til nogle bestemte sites/links m.v.!

Ved ikke helt hvordan det skal laves, men det lyder til at det er den struktur du mangler! ;o)
Avatar billede webbe Nybegynder
20. juli 2001 - 10:38 #2
Det der forhindrer at brugeren ryger forbi loginsiden får du her:

<%
If isEmpty(Session(\"adgang\")) Then
    Response.Redirect(\"retry.asp?error=ja\")
    If Session(\"login\") = True Then
        Response.Redirect(\"login.asp\")
    End If
End if
%>
Avatar billede tdaugaard Nybegynder
20. juli 2001 - 10:40 #3
webbe:> hvorfor så meget kode for så lidt ?

<% If Session(\"isSecure\") = \"\" Then Response.Redirect \"login.asp\" %>

er alt
Avatar billede nute Nybegynder
20. juli 2001 - 10:40 #4
din db:

userTable:
ID
username
password
redirectPage

ditt script:


<%
Dim userName, passWord, redirectPage
if( Request.ServerVariables(\"REQUEST_METHOD\") = \"POST\" ) then       
  userName = Request.Form(\"userName\")
  passWord = Request.Form(\"passWord\")
  Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"database.mdb\") 
  SQL = \"SELECT * FROM userTable WHERE username LIKE \'\" & userName & \"\' AND password LIKE \'\" & passWord & \"\'\"
  Set RS = Conn.Execute( SQL )
  if( NOT RS.EOF ) then
    response.redirect( RS(\"redirectPage\") )
  end if       
%>

<html>
<body>
<form action=\"\" method=\"POST\">
  <input type=\"text\" name=\"userName\"><br>
  <input type=\"text\" name=\"passWord\"><br>
  <input type=\"submit\"><br>
</form></body>
</html>
Avatar billede webbe Nybegynder
20. juli 2001 - 10:41 #5
tdaugaard:

Hmmm - er bare noget gammel kode, som jeg har overtaget da jeg startede i mit job! ;o)

Har ikke spekuleret på at gøre det anderledes, men kan godt se fordelen i at bruge mindre kode! ;0)
Avatar billede tdaugaard Nybegynder
20. juli 2001 - 10:42 #6
nute: Virker REQUEST_METHOD også ? Jeg plejer at bruge HTTP_METHOD .. :o)
Avatar billede bobbedude Nybegynder
20. juli 2001 - 10:43 #7
nute >> hvad skal jeg skrive i toppen af siderne kunden har adgang til for at chekke om han nu også har adgan. Hvis nu kunden hedder eks. StoreTown ?
Avatar billede tdaugaard Nybegynder
20. juli 2001 - 10:44 #8
webbe:> *G* well .. nu er jeg ret så perfektionistisk når jeg koder sååe .. optimering er også noget jeg selv bruger meget tid på :o)
Avatar billede nute Nybegynder
20. juli 2001 - 10:46 #9
tdaugaard >> REQUEST_METHOD fungerer fint :)

bobbedude >> kan du ikke løse dette med cookies

/nute
Avatar billede bobbedude Nybegynder
20. juli 2001 - 10:48 #10
nute >> sikkert men jeg er ikke en haj i ASP og Cookies :ø)
Avatar billede nute Nybegynder
20. juli 2001 - 10:53 #11
Avatar billede bobbedude Nybegynder
20. juli 2001 - 10:55 #12
Nute >> første gang jeg loggede ind fik jeg denne fejl:
Expected \'End\'

/login.asp, line 11

under det sidste ( end if ) tilføjede jeg endnu en ( end if ) så kom login boksen frem men når jeg skrev brugernavn og password fik jeg denne fejl :

Microsoft VBScript runtime error \'800a01a8\'

Object required: \'Conn\'

/login.asp, line 6
Avatar billede nute Nybegynder
20. juli 2001 - 10:58 #13
uups...bytt denne linje:

Dim userName, passWord, redirectPage

ut med disse to:

Dim Conn, RS, userName, passWord, redirectPage
set Conn = SErver.CreateObject(\"ADODB.Connection\")

/nute
Avatar billede bobbedude Nybegynder
20. juli 2001 - 11:03 #14
Fedest Nute det virker perfekt.
Jeg ved at du sendte mig den side on Cookies, men jeg er vist lidt fat svag hvad programmering gælder. Så skal jeg oprette et nyt spørgsmål for at få svar på hvordan jeg laver det cookie triks med scriptet. det er ok hvis du vil have point for at lave det.
Avatar billede nute Nybegynder
20. juli 2001 - 11:24 #15
jeg ville ha byttet ut disse linjene:

<%
Dim userName, passWord, redirectPage
if( Request.ServerVariables(\"REQUEST_METHOD\") = \"POST\" ) then       
  userName = Request.Form(\"userName\")
  passWord = Request.Form(\"passWord\")
 

med disse:

<%
Dim userName, passWord, redirectPage
if( Request.ServerVariables(\"REQUEST_METHOD\") = \"POST\" ) then       
  userName = Request.Form(\"userName\")
  passWord = Request.Form(\"passWord\")
  Response.Cookies(\"MyCookie\")(\"userName\") = userName

deeretter kan du på toppen av siden gjøre følgende:

<%
Dim userAllowed, userName
userAllowed = \"enBruger\"
userName    = Request.Cookies(\"MyCookie\")(\"userName\")
if NOT( userAllowed = userName ) then 
  response.redirect \"login.asp\"
end if
%>

userAllowed kan også være en array av brukernavn som har tilgang til denne side...kan det brukes ?
Avatar billede bobbedude Nybegynder
20. juli 2001 - 11:35 #16
nute >> du er en haj :ø)
Avatar billede nute Nybegynder
20. juli 2001 - 11:35 #17
:) takker :)
Avatar billede bobbedude Nybegynder
20. juli 2001 - 11:53 #18
nute>> et array kunne det se sådan ud
userAllowed = \"Stores,users\"
eller hvad skal jeg bruge som seperator ?
Avatar billede nute Nybegynder
20. juli 2001 - 11:58 #19
en enkel måte å gjøre det på (hvis du skal lage array med hvem som har tilgang til siden:

<%
Dim strUserAllowed, arrUserAllowed, userName, found
found = false
strUserAllowed = \"enBruger,toBruger,treBruger,fireBruger\"
arrUseAllowed = SPLIT( strUserAllowed )
userName    = Request.Cookies(\"MyCookie\")(\"userName\")
for i=0 to UBOUND( arrUserAllowed )
  if ( arrUserAllowed(i) = userName ) then 
    found = true
    exit for
  end if
next
if NOT found then
  response.redirect \"login.asp\"
end if
%>


Avatar billede bobbedude Nybegynder
20. juli 2001 - 12:01 #20
Tusind tak nute
Avatar billede nute Nybegynder
20. juli 2001 - 12:04 #21
anytime :)
Avatar billede bobbedude Nybegynder
20. juli 2001 - 12:34 #22
hey nute når jeg kører overstående kommer denne fejl:

Microsoft VBScript runtime error \'800a000d\'

Type mismatch: \'UBOUND\'

/admin.asp, line 7
Avatar billede nute Nybegynder
20. juli 2001 - 12:56 #23
ahhhh .... bytt ut denne:

arrUseAllowed = SPLIT( strUserAllowed )

med denne:

arrUseAllowed = SPLIT( strUserAllowed, \",\" )

/nute
Avatar billede bobbedude Nybegynder
20. juli 2001 - 13:00 #24
Microsoft VBScript runtime error \'800a000d\'

Type mismatch: \'UBOUND\'

/admin.asp, line 7

kommer stadig frem:


<%
Dim strUserAllowed, arrUserAllowed, userName, found
found = false
strUserAllowed = \"enBruger,toBruger,treBruger,fireBruger\"
arrUseAllowed = SPLIT( strUserAllowed, \",\" )
userName    = Request.Cookies(\"MyCookie\")(\"userName\")
for i=0 to UBOUND( arrUserAllowed )
  if ( arrUserAllowed(i) = userName ) then 
    found = true
    exit for
  end if
next
if NOT found then
  response.redirect \"login.asp\"
end if
%>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester