Avatar billede mettecarsten Nybegynder
06. februar 2007 - 20:08 Der er 12 kommentarer og
2 løsninger

Sende id via session i en løkke

Hej eksperter

Jeg ved ved at opbygge et administratorområde, hvor en bruger kan logge ind og ellers rette i sine egne sider. Antallet af sider for den enkelte bruger vises via en løkke, altså tager alle rækker i en tabel, som passer på brugernavnet. Når den enkelte side skal rettes, er det jo ganske enkelt at gå videre til en "retteside" ved at medsende id ....?Id=xx. Det er jo bare ikke en god ide, da en bruger så bare kan rette id-nr. i browseren og komme ind på en anden brugers side.

Hvis jeg indsætter en session i en løkke, medsender den altid første record. Hvordan koder jeg det, så id-nr. kommer med til "rettesiden", men det skal jo ikke være sådan, at brugeren ser id-nr.?

Håber, I forstår.

På forhånd tak.
Avatar billede jps6kb Novice
06. februar 2007 - 20:26 #1
Hmm.. du kunnde jo, en hurtig løsning, gøre sådan, at når man går ind på en side.. id=73 .. så tjekker den igen, og det er brugerens egen side. Ellers redirecte til en default "det kan du glemme" side.
Avatar billede mettecarsten Nybegynder
06. februar 2007 - 20:31 #2
Det lyder ikke helt tosset :-) Har du lige et forslag til et sådant tjek?
Avatar billede madeindk Nybegynder
06. februar 2007 - 20:35 #3
mettecarsten >> Så kører du jo med ypper dårlig sikkerhed, hvis man kan gå tilbage og skrive et andet ID i sin adresselinie. I databasen skal brugerne jo have et brugerID og så skal den tjekke på siden hvor man redigere sin side om brugerID = Session("brugerID") fx.
Avatar billede mettecarsten Nybegynder
06. februar 2007 - 20:38 #4
madeindk - jeg har gjort det sådan tidligere, og det er helt korrekt helt vild dårlig sikkerhed - det er også derfor, at jeg nu skal have det ændret. Du har vel ikke noget yderlige omkring dette sikkerhedsproblem?
Avatar billede madeindk Nybegynder
06. februar 2007 - 20:40 #5
Der ville jo ikke være noget problem hvis du på siden hvor man redigere sin side tjekker om brugerID = Session("brugerID")

<% If rs("brugerID") = Session("brugerID") Then ' Bare et eksempel %>

Her kan du jo sagtens skrive side ID. Det gør jo ikke noget, for nu har vi jo et tjek på - så er der jo intet problem.

<% End If %>
Avatar billede jps6kb Novice
06. februar 2007 - 20:43 #6
Jamen, det kan du tro.

Når man kommer ind på ex. retSide.asp?id=75 .. så tjekker den, som det første, om side 75 har det brugernavn som er i din session. :) Hvis ikke, så redirecter den.
Er det til at forstå? :)
Avatar billede madeindk Nybegynder
06. februar 2007 - 20:43 #7
Det er til at forstå. Så er der vel heller intet problem i at skrive ID'et, det behøver du da bestemt ikke holde hemmeligt for brugeren, hvis du har sikkerhedstjek på :-9
Avatar billede jps6kb Novice
06. februar 2007 - 20:49 #8
Nej, altså jeg har ikke haft problemer med den fremgangsmåde.

Der skal jo nok være en teoretisk og måske praktisk begrundelse for at gøre det anderledes, men ikke noget jeg er stødt på.
Avatar billede mettecarsten Nybegynder
06. februar 2007 - 20:57 #9
Det lyder meget rigtigt, men jeg kan bare ikke få det til at virke. Jeg har prøvet med følgende koder:

<% If rs("Bruger") <> Session("Bruger") Then
Response.Redirect("login.asp")
End If
%>

eller

<% If rs("Bruger") = Session("Bruger") Then ' Bare et eksempel %>

og <% End If %> til sidst i dokumentet.

I første eksempel går den uanset hvad til login.asp og blank side i andet eksempel. Har tjekket igen og igen, at if sætningen også er rigtig, svarer til 1 = 1.

Kan I se, hvad jeg gør galt?
Avatar billede madeindk Nybegynder
06. februar 2007 - 21:16 #10
<%
If Cint(rs("Bruger")) = Cint(Session("Bruger")) Then ' Bare et eksempel
  Response.Write "Din session er OK"
Else
  Response.Write "Din session er ikke OK - kan du så komme ud!"
End If
%>
Avatar billede mettecarsten Nybegynder
06. februar 2007 - 21:26 #11
Så virker det :-) Virkede fint med forslaget fra madeink. For at slippe for "else" har jeg i stedet lavet den sådan

<%
If Cint(rs("Bruger")) <> Cint(Session("Bruger")) Then
  Response.Redirect("login.asp")
End If
%>

Det virker også - korrigerer mig lige, hvis det ikke er en korrekt kode :-)

Tusind tak for hjælpen. Jeg deler pointene, men mangler lige et svar fra madeindk
Avatar billede madeindk Nybegynder
06. februar 2007 - 21:36 #12
Det kan godt bruges det der ;-)
Avatar billede madeindk Nybegynder
06. februar 2007 - 21:36 #13
Det skulle da vist ha' været et svar :-)
Avatar billede madeindk Nybegynder
06. februar 2007 - 21:41 #14
Mange tak for point.
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