webForumDet fria alternativet

skriva ut resultat från databas, 2 st likadana resultat = 1 resultat

ASP

28 svar · 529 visningar · startad av Dashi

Medlem sedan jan. 2005296 inlägg
Frågan#1

Har ett litet problem här.. i min access databas har jag t.ex 2 kolumner den ena heter namn och den andra heter resultat i dessa ligger t.ex följande:

Resultat: Namn:
25023 Bertil
25023 Olof
25023 Nisse
24987 Bodil
24987 Lennart

Med denna koden:

Do Until RecSet.EOF

response.write "<a href=""poangresultat.asp?resultat=" & recset("resultat") &""">" & recset("resultat") & "</a><br>"

RecSet.MoveNext
Loop

skriver den ut 5 st länkar som då ser ut såhär:

25023
25023
25023
24987
24987

jag vill istället att den skriver ut såhär altså ett av varje nr som finns i tabellen:

25023
24987

Mvh //Darek

Medlem sedan apr. 20022 743 inlägg
#2

Använd distinct i din SQL-sats.

Medlem sedan jan. 2005296 inlägg
#3

Poffe skrev:

Använd distinct i din SQL-sats.

hur? :P

här här du sql satsen :)

namn=Request.Querystring("namn")

visa = "SELECT * FROM resultattab WHERE namn = '" & namn & "' ORDER BY resultat" 

RecSet.Open visa, Connect, adOpenStatic, adLockOptimistic

Mvh //Darek

Medlem sedan feb. 20032 027 inlägg
#4

Dashi skrev:

Poffe skrev:

Använd distinct i din SQL-sats.

hur? :P

här här du sql satsen :)

namn=Request.Querystring("namn")

visa = "SELECT * FROM resultattab WHERE namn = '" & namn & "' ORDER BY resultat" 

RecSet.Open visa, Connect, adOpenStatic, adLockOptimistic

Mvh //Darek

namn=Request.Querystring("namn")

visa = "SELECT DISTINCT  namn, resultat FROM resultattab WHERE namn = '" & namn & "' ORDER BY resultat" 

RecSet.Open visa, Connect, adOpenStatic, adLockOptimistic
Medlem sedan apr. 20022 743 inlägg
#5

Dashi skrev:

hur? :P

Det finns en riktigt bra sökfunktion här som hittar det mesta, testa gärna den.

Select Distinct resultat From resultattab Where namn = '" & Replace(namn, "'", "''") & "' Order By resultat"
Medlem sedan jan. 2005296 inlägg
#6

vad är det för skillnad på

visa = "SELECT DISTINCT resultat FROM resultattab WHERE namn = '" & namn & "' ORDER BY resultat

och på

visa= "SELECT DISTINCT resultat FROM resultattab WHERE namn = '" & Replace(namn, "'", "''") & "' ORDER BY resultat"

???

Mvh //Darek

Medlem sedan apr. 20022 743 inlägg
#7

Första har inget skydd alls mot sql-injections.. Kommer du inte ihåg den tråden?

Medlem sedan feb. 20032 027 inlägg
#8

ne men det är bara att göra som du skriver eller placera variabeln i min funktion som han använder i sql-en

det han ville veta var hur man använder distinct och det har vi båda svarat på nu

Medlem sedan feb. 20032 027 inlägg
#9

Dashi skrev:

vad är det för skillnad på

visa = "SELECT DISTINCT resultat FROM resultattab WHERE namn = '" & namn & "' ORDER BY resultat

och på

visa= "SELECT DISTINCT resultat FROM resultattab WHERE namn = '" & Replace(namn, "'", "''") & "' ORDER BY resultat"

???

Mvh //Darek

I den andra så bygger du in ett skydd som sql-injections (farliga tecken), det gör du inte i första satsen, lägg märke till replace som byter ut ' mot "

Medlem sedan jan. 2005296 inlägg
#10

Poffe skrev:

Första har inget skydd alls mot sql-injections.. Kommer du inte ihåg den tråden?

okej.. japp, men grejen är att jag provade med båda 2 och se om där är någon skillnad på resultatet, och där va ingen skillnad, tänkte de sen att den andra skyddar mot sql-injections, provade därför en injection och injectionen funkade ändå även om jag hade den raden du gav mig..

Mvh //Darek

Medlem sedan apr. 20022 743 inlägg
#11

WebbisNet skrev:

ne men det är bara att göra som du skriver eller placera variabeln i min funktion som han använder i sql-en

det han ville veta var hur man använder distinct och det har vi båda svarat på nu

Och sen frågade han vad det var för skillnad på de två koderna han visade och då svarade jag på det. Tråden jag syftar på är inte den du tänker på (leox:s tråd) utan en som var uppe för ett tag sedan.

Medlem sedan apr. 20022 743 inlägg
#12

Dashi skrev:

okej.. japp, men grejen är att jag provade med båda 2 och se om där är någon skillnad på resultatet, och där va ingen skillnad, tänkte de sen att den andra skyddar mot sql-injections, provade därför en injection och injectionen funkade ändå även om jag hade den raden du gav mig..

Mvh //Darek

Fick du fel då du skrev in en ' med koden som jag visade?

Medlem sedan jan. 2005296 inlägg
#13

Poffe skrev:

Dashi skrev:

okej.. japp, men grejen är att jag provade med båda 2 och se om där är någon skillnad på resultatet, och där va ingen skillnad, tänkte de sen att den andra skyddar mot sql-injections, provade därför en injection och injectionen funkade ändå även om jag hade den raden du gav mig..

Mvh //Darek

Fick du fel då du skrev in en ' med koden som jag visade?

skrev till 'hi' or 1 = 1 och fick då fram information ändå, och 'hi' or 1 = 1 är en sorts sql-injection där man får reda på info om vad kolumnerna i tabellen heter

Medlem sedan apr. 20022 743 inlägg
#14

Nja, det är inte riktigt så man skriver men det här inte hit. Vilken information fick du fram?

Medlem sedan jan. 2005296 inlägg
#15

Poffe skrev:

Nja, det är inte riktigt så man skriver men det här inte hit. Vilken information fick du fram?

sorry skrev lite fel.. använda mig av hi' or 1=1--

fick då fram detta meddelande:

Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel i sträng i frågeuttrycket 'name = 'hi' or 1=1--' ORDER BY resultat'.
/sida/poangresultat.asp, line 29

Medlem sedan apr. 20022 743 inlägg
#16

Är du säker på att du använder den kod jag gav, alltså den som byter ut ' mot ''?

Medlem sedan jan. 2005296 inlägg
#17

Poffe skrev:

Är du säker på att du använder den kod jag gav, alltså den som byter ut ' mot ''?

använder mig exakt av följande kod, direkt kopierad från asp filen..

visa = "SELECT DISTINCT resultat FROM resultattab WHERE name = '" & Replace(name, "'", "''") & "' ORDER BY resultat"
Medlem sedan apr. 20022 743 inlägg
#18

Kör du lokalt eller på hotell? har du laddat upp filen om du kör på hotell? Har du någon adress så man kan prova?

Annars vet jag faktiskt inte, kan vara så att jag missat nått, är riktigt bakis i dag så tänker inte helt klart ;)

Medlem sedan jan. 2005296 inlägg
#19

jag kör lokalt.. ska testa sen när jag lägger upp den på hotell, kan skriva till dig då.. för det kan bero på ett annat fel osså som jag hitta.. men ska testa det sen.. men du det jag tänkte på, hjälper inte detta mot sql injections??

On Error Resume Next

Response.Redirect "fel.asp"

för då vissas ju inte error sidan med informationen utan då kommer man ju endast direkt till fel.asp?

Medlem sedan apr. 20022 743 inlägg
#20

Nej, alltså SQL-injections kan användas på många sätt. Ett är att få fram information genom felmeddelanden, men du kan även använda det utan att skapa felmeddelanden, t.ex. logga in på andra personers konton och linande på olika webbtjänster som inte är skyddade.

Den kod du gav nu skulle väll iofs med lite modifikation hindra att man ser ett felmeddelande men hindrar inte sql-injections.

310 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
178 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)