Is kom med følgende:
> Hej
>
> jeg forsøger at lave noget, så der fra et privat login kan sendes en besked
> til en gruppe personer som er i en database
> Jeg anvender .asp filer og J-mail
>
> i databasen er der forskellige rækker, hvor man kan sætte et"1" tal ud for
> hver person, og en person kan så være med i flere grupper.
>
Databasen burde have en tabel, hvor der var en record med person_id og
gruppe_id for hver gruppe personen var med i, men lad os antage at du
ikke kan/vil lave det "korrekt".
> jeg har fået det til at virke med fast filter.Jeg filtret her i denne linje:
> personliste.Open "SELECT * FROM tblSend Where Bestyrelse = 1 " , strConnect
>
> jeg ønsker noget i retning af
>
> dim strFilter
> strFilter = Request.QueryString("sendtil")
>
> hvordan skal denne linje så se ud ???
> det er nogle tegn omkring strFilter jeg ikke kan få rigtige.
>
> personliste.Open "SELECT * FROM tblSend Where strFilter = 1 " , strConnect
>
>
Du kan sikket finde en tutorial, der siger at du kan lave
personliste.Open "SELECT * FROM tblSend Where " & strFilter & " = 1 "
, strConnect
Men det er hamrende usikkert, og indbyder til indbrud i din database.
Det, du risikerer er dette:
http://xkcd.com/327/
Normalt er løsningen at bruge "parameterized queries", f.ex.
"Select * from tab where felt=?" og så give data som en parameter.
Men det kan man ikke, når det er et feltnavn, der er variablen.
Der kunne laves noget kompliceret sql med case-sætninger, men det kan
ofte blive lidt langhåret.
Noget á la
..where case ? when 'Bestyrelse' then bestyrelse
when 'Fodbold' then fodbold
else 0 end = 1" og så strFilter som parameter.
Men det letteste er nok dette:
Du skal sikre dig at der kun kommer de værdier, du tillader.
Det kan f.ex. klares med en case-sætning i asp
Select case strConnect
case 'Bestyrelse'
case 'Fodbold'
case 'Håndbold'
case else
response.write 'Illegal værdi'
response.end
end case
De første case's udføres, men gør ikke noget, når værdien er kendt.
Er det ikke en godkendt værdi, stopper programmet. (Du kan også sætte
en variabel, f.ex. hack_attempt=1 og så reagere passende på det senere)
Nu, du er sikker på at strConnect indeholder noget gyldigt, kan du
tillade dig at lave
personliste.Open "SELECT * FROM tblSend Where " & strFilter & " = 1 "
, strConnect
Leif
--
Husk kørelys bagpå, hvis din bilfabrikant har taget den idiotiske
beslutning at undlade det.