Avatar billede fomse Nybegynder
11. november 2004 - 13:46 Der er 10 kommentarer og
1 løsning

Hjælp med login

Kan man i følgende redirecte afhængig af rettighed?
Vil henvise til main.asp hvis rettighed er 1 og til main2.asp hvis rettighed er 2 kan man det?

Forestillede mig at men i databasen tilføjede en kollone "rettighed" som så kunne være enten 1 eller 2

Koden som tjekker login:
<% Option Explicit %>

<%
Dim Username, Password
Username = Replace((trim(Request("username"))), "'", "")
Password = Replace((trim(Request("password"))), "'", "")

'//Finder Username og Password value, trimmer dem (fjerne alle space på begge sider)
'//og fjerner ' fra dem da det kan med føre problemer!

If Username = "" Or _
  Password = "" Then

    Response.Redirect "login.asp?ErrStr=Et eller flere felter er blanke!"

End If

'//Hvis et af felterne er blanke bliver brugeren sendt tilbage
'//til login.asp med en fejlmelding.

Dim dbUsers, rsUsers, SQL, Path
Set dbUsers = Server.CreateObject("ADODB.Connection")
Path = "DBQ=" & server.mappath("db.mdb")
dbUsers.Open "DRIVER={Microsoft Access Driver (*.mdb)};"&Path
Set rsUsers = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM Users WHERE Username='" & (Username) & "' And Password='" & (Password) & "'"
rsUsers.Open SQL, dbUsers

'//Åbner forbindelsen til db.mdb databasen

If rsUsers.BOF Or rsUsers.EOF Then
    Response.Redirect "login.asp?ErrStr=Fejl i brugernavn eller password!"

    '//Hvis brugernavnet og passwordet ikke matcher er recordsettet tomt,
    '//Hvis det er det bliver brugeren sendt til login.asp med en fejlmelding!

Else
    Session("idUser") = rsUsers("idUser")
    Response.Redirect "main.asp"

    '//Hvis det er ikke er tomt er brugeren "fundet" og brugeren sendes til main.asp
    '//med sin nye idUser session der holder brugerens ID

End If
%>


Fomse:-)
Avatar billede fennec Nybegynder
11. november 2004 - 13:58 #1
Det skulle ikke være noget problem:

Session("idUser") = rsUsers("idUser")
if rsUsers("rettighed") = 1 then
  Response.Redirect "main1.asp"
elseif rsUsers("rettighed") = 2 then
  Response.Redirect "main2.asp"
end if

Så kan du også redirecte til hvor du nu vil. Det kunne måske være en ide at smide alle admin filer ind i en mappe for sig selv. Men det er bare et forslag.
Avatar billede fennec Nybegynder
11. november 2004 - 13:59 #2
... Går ud fra at det er et admin/bruger system du er ved at lave, hvorfor jeg forslog det med en admin mappe.
Avatar billede fomse Nybegynder
11. november 2004 - 14:08 #3
Tusind tak for hjælpen!!
Nej det er ikke et adminsystem.
Det er nogle lister som nogle skal have læserettighed til, og andre skal have mulighed for at skrive i listerne....
Avatar billede fomse Nybegynder
11. november 2004 - 14:15 #4
Lige en ting til!!
Hvis en med rettighed 2 er logget ind så kan han i browseren skrive main1.asp og derved få adgang!!!
Kan man ændre det?

Det er denne funktion som er på alle beskyttede sider:

<%
If Session("idUser") = 0 Or _
  Session("idUser") = "" Then

    Response.Redirect "login.asp?ErrStr=Der opstod en fejl, log ind igen!"

End If

'//Hvis sessionen idUser = 0 eller intet bliver brugeren sendt til login.asp med en fejlmelding!
%>
Avatar billede fennec Nybegynder
11. november 2004 - 14:36 #5
Når du vil til at have forskellige "niveauer" i login, skal du også gemme den værdi i en session. Den session skal du så også tjekke for på siderne.

if Session("level") <> 2 then
    Response.Redirect "login.asp?ErrStr=Du har ikke rettighed til at se denne side!"
end if
If Session("idUser") = 0 Or Session("idUser") = "" Then
    Response.Redirect "login.asp?ErrStr=Der opstod en fejl, log ind igen!"
End If
Avatar billede fennec Nybegynder
11. november 2004 - 14:37 #6
... De to if sætninger skal stå omvendt, så man får login fejlen først.
Avatar billede fomse Nybegynder
11. november 2004 - 14:47 #7
Hmm er ikke helt med.....
Hvis jeg ligger det ind du har skrevet er der ikke adgang for nogen!!!

Kan du ikke forklare mig det?

Fomse:-)
Avatar billede fennec Nybegynder
11. november 2004 - 14:53 #8
For det første skal du gemme rettighed værdien i en session på login siden:

Session("idUser") = rsUsers("idUser")
Session("rettighed") = rsUsers("rettighed")
if rsUsers("rettighed") = 1 then
  Response.Redirect "main1.asp"
elseif rsUsers("rettighed") = 2 then
  Response.Redirect "main2.asp"
end if

Så tjekke du for den session også på dine sider. Dette gælder alle de sider hvor rettighed skal være 2:

If Session("idUser") = 0 Or Session("idUser") = "" Then
    Response.Redirect "login.asp?ErrStr=Der opstod en fejl, log ind igen!"
End If
if Session("rettighed") <> 2 then
    Response.Redirect "login.asp?ErrStr=Du har ikke rettighed til at se denne side!"
end if
Avatar billede fomse Nybegynder
11. november 2004 - 15:02 #9
Hmm skal jeg så have 2 forskellige funktioner.
En som tjekker rettighed 1 og en som tjekker rettighed 2

Sådan som det køre nu er det kun dem med rettighed 2 som har adgang ikke rettighed 1
Avatar billede fomse Nybegynder
11. november 2004 - 15:05 #10
Sorry!! Nu forstår jeg det!!
Jeg har filen header.inc med funktionen men har brug for en header2.inc på alle sider med rettighed 2

Takker:-)
Avatar billede fennec Nybegynder
11. november 2004 - 15:13 #11
no prob
.o) <-- One Eyed Jack
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