RifflesMedlem sedan juni 2000836 inlägg
Så här plockar jag ut värdena från min tabell:
Visa = Request.Querystring("visa")
SQL = "SELECT * FROM spelschema WHERE sort ='" & Visa & "'ORDER BY datum DESC"
Länkarna är dessa:
<a href="spelschema.asp?visa=s&visa=t" target="main">Alla matcher</a><br>
<a href="spelschema.asp?visa=t" target="main">Träning</a><br>
<a href="spelschema.asp?visa=s" target="main">Serien</a><br>
Det blir fel på den översta länken när jag vill visa alla matcher.
Alltså, hur skriver jag när jag har två variabler i en länk?
PalleMedlem sedan apr. 20002 716 inlägg
En variant:
[red]<a href="spelschema.asp?visa=s&[b]visa2[/b]=t" target="main">Alla matcher</a><br>
<a href="spelschema.asp?visa=t" target="main">Träning</a><br>
<a href="spelschema.asp?visa=s" target="main">Serien</a><br>
...
Visa = trim(Request.Querystring("visa"))
[b]Visa2 = trim(Request.Querystring("visa2"))[/b]
SQL = "SELECT * FROM spelschema WHERE sort = '"& Visa &"' "
If Len(Visa2) > 0 Then SQL = SQL &" AND sort = '"& Visa2 &"' "
SQL = SQL & "ORDER BY datum DESC"[/red]
Vill du promt använda samma querystring så kan du använda denna variant a´la ful-lösning:
[red]<a href="spelschema.asp?visa=s&visa=t" target="main">Alla matcher</a><br>
<a href="spelschema.asp?visa=t" target="main">Träning</a><br>
<a href="spelschema.asp?visa=s" target="main">Serien</a><br>
...
Visa = trim(Request.Querystring("visa"))
If InStr(Visa, ",") Then
Visa = Replace(Visa, ",", "' AND sort = '")
End If
SQL = "SELECT * FROM spelschema WHERE sort ='" & Visa & "'ORDER BY datum DESC"[/red]
RifflesMedlem sedan juni 2000836 inlägg
När jag provar nån av alternativen så fungerar det inte alls.
Den tar inte nån variabel alls.
Sidan blir bara tom och det kommer inte upp något felmeddelande heller.
Bör man trimma allt när man skickar en Querystring?
Det är iofs bättre att göra det än att inte göra det! :) Allt för att minska tänkbara fel som kan uppstå.
PalleMedlem sedan apr. 20002 716 inlägg
Ser nu att jag hade kvar url´en till min testsida.. har ändrat det nu.
Kolla så du verkligen hamnar på rätt sida.. :)
RifflesMedlem sedan juni 2000836 inlägg
Hehe, så lätt var det inte, tyvärr...
PalleMedlem sedan apr. 20002 716 inlägg
Men det fungerade väl innan?
Sidan blir bara tom och det kommer inte upp något felmeddelande heller.
Är du på rätt sida?
Har du stäng av Visa egna http-felmeddelande i din webbläsare?
RifflesMedlem sedan juni 2000836 inlägg
Det fungerade inte alls med nåt av dina exempel på den länken jag hade problem med.
Ja, det är rätt sida.
Ja, det är avstängt, andra felmeddelande kommer upp som det ska :(
Dock inte i detta exempel.
RifflesMedlem sedan juni 2000836 inlägg
Om jag testar första lösningen så blir det så här:
<%= visa %> = s' AND sort = ' t
Förmodligen fel i Replace-funktionen?
If InStr(Visa, ",") Then
Visa = Replace(Visa, ",", "' AND sort = '")
End If
Kan inget om Replace så där får man plugga lite o kolla på det senare.
PalleMedlem sedan apr. 20002 716 inlägg
Japp, då stämmer det. :)
Det enda som man kanske ska ändra på är även replace´a mellanslaget, ex.
[red]If InStr(Visa, ",") Then
Visa = Replace(Visa, [blue]", "[/blue], "' AND sort = '")
End If[/red]
Skriv sedan ut sql-satsen och kolla den istället för bara variablen.
De tester som jag har genomför har fungerat galant.
RifflesMedlem sedan juni 2000836 inlägg
Hm, det borde fungera
Så här ser det ut nu när jag skriver ut SQL:n.
SELECT * FROM spelschema WHERE sort ='s' AND sort = 't' ORDER BY datum DESC
fredrikMedlem sedan dec. 19991 082 inlägg
Jag ser även att du inte skyddar dig mot sk "SQL-injection" när du tar emot dina parametrar. Det innebär alltså skydd för att användare inte ska kunna förändra sorterings-parametern för att hämta data från andra tabeller tex.
För att skydda sig mot det måste du i detta fallet byta ut '-tecknet eller ännu hellre använda en parameteriserad fråga.
Du kan läsa mer om SQL-injection i nedanstående artikel:
http://www.swesecure.com/?ID=dc6ea60a-12ae-4e7e-9e9c-59489ccafa90&IID=29a58b01-ca79-4877-b924-4f5da18d4a2a
andreas_lindhMedlem sedan jan. 20011 091 inlägg
Det borde väl vara så här
SELECT * FROM spelschema WHERE sort ='s' OR sort = 't' ORDER BY datum DESC
Sort kan väl inte ha två olika värden i samma post
RifflesMedlem sedan juni 2000836 inlägg
Tack Palle och Andreas! Nu fungerar det!
Nu ska jag bara ta mig an SQL-injection.