[asp][sql]op basis van session select?

Pagina: 1
Acties:

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 14:38
Hoi,

ik ben bezig met een soort usersysteem.

ik blijf steken op de volgende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<%
if session("userID")<>"userId" then
Response.write "dit werkt dus!!! :)" 'voor debug!!
else
response.redirect "inlog.asp"
end if
%>
<%
Dim rs_user_edit_ident
rs_user_edit_mm_ident = "hier klopt het dus niet!!!"
if (session("userID") <> "") then rs_user_edit_ident = session("userID")
%>
<%
set rs_user_edit = Server.CreateObject("ADODB.Recordset")
rs_user_edit.ActiveConnection = MM_uzaygebruikerslijst_STRING
rs_user_edit.Source = "SELECT *  FROM Tblusers WHERE ID = " + Replace(rs_user_edit_mm_ident, "'", "''") + ""
rs_user_edit.CursorType = 0
rs_user_edit.CursorLocation = 2
rs_user_edit.LockType = 3
rs_user_edit.Open()
rs_user_edit_numRows = 0
%>

het gaat fout zodra die "rs_user_edit_mm_ident" zeg maar ingevuld moet worden. Die moet dus de waarde van session ("userID") krijgen.

Zou iemand me alsjeblieft kunnen zeggen wat ik fout doe. Ik zie het niet meer...

Heart..pumps blood.Has nothing to do with emotion! Bored


  • eek
  • Registratie: Februari 2001
  • Laatst online: 06-04-2020

eek

@MagickNET

if (session("userID") <> "") then rs_user_edit_ident = session("userID")
if (session("userID") <> "") then rs_user_edit_mm_ident = session("userID")

Skill is when luck becomes a habit.


Verwijderd

"SELECT * FROM Tblusers WHERE ID = '" + Replace(rs_user_edit_mm_ident, "'", "''") + "'"


Quotes om je waarde heen doen + bovenstaande

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 14:38
wat bedoel je met quotes om mijn waardes?

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Ten eerste, ik denk dat _eek_ het bij het juiste eind heeft. Kijk eens naar deze code:
code:
1
2
3
Dim rs_user_edit_ident
rs_user_edit_mm_ident = "hier klopt het dus niet!!!"
if (session("userID") <> "") then rs_user_edit_ident = session("userID")

Je gebruikt hier twee variabelenamen door elkaar die heel erg op elkaar lijken:
- rs_user_edit_ident: deze variabele declareer je, en geef je de waarde session("userID")
- rs_user_edit_mm_ident geef je de waarde hier klopt het dus niet!!! en deze waarde gebruik je vervolgens in de zetten van je SQL statement:
code:
1
rs_user_edit.Source = "SELECT *  FROM Tblusers WHERE ID = " + Replace(rs_user_edit_mm_ident, "'", "''") + ""

en daar gaat het dus mis.

Ten tweede, je code is gruwelijk slecht. Dat bedoel ik niet om je voor schut te zetten maar als opbouwende kritiek. Je kun namelijk dergelijke fouten voorkomen of veel makkelijker vinden als je je code goed opbouwt. Om dat te bewijzen zal ik je wat tips geven.

1) Start je code met 'Option Explicit'. Daardoor zullen er foutmeldingen worden gegeven als je een variabele niet declareert. Hierdoor was de bovenstaande fout afgevangen, omdat de variable waar je de userID van sessie in zet niet is gedeclareerd. Ja, het betekent wat meer typewerk voor expliciet declareren van variabeles, maar kan uren zoekwerk voorkomen.

2) Gebruik de Hongaarse notatie voor variabelen, dat is beter leesbaar. Voorbeeld: strZetEenHoofdletterVoorIederBeginVanEenWoord

3) Geef je code een betere layout. Gebruik tabs om in te springen bij loops of condities. Voorbeeld:
code:
1
2
3
4
5
6
7
8
9
10
<%
    Option Explicit
    Dim strTest
    strTest = "a"
    If strTest = "a" Then
        Response.Write "a<br>"
    Else
        Response.Write "niet a<br>"
    End If
%>

4) Gebruik alleen '<%' als je een scheiding hebt tussen layout en functionaliteit, dus dit is onzin:
code:
1
2
3
4
if (session("userID") <> "") then rs_user_edit_ident = session("userID")
%>
<%
set rs_user_edit = Server.CreateObject("ADODB.Recordset")

In dit artikel staan nog wat nuttige tips: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/modcore/html/deconwritingsolidcode.asp

Enjoy :)

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 14:38
thanks man...

dit vinnik wel ff relaxed...

Altijd handig zulk soort tips.

Verder:
mijn probleem is opgelost. Alleen nu heb ik een ander probleem en dat gaat over die sessie. Maar daar ga ik eerst zelf aan werken, en als ik er niet uit kom, laat ik me hier weer eens ff horen... thanks!

Heart..pumps blood.Has nothing to do with emotion! Bored

Pagina: 1