Avatar billede doncarnage Nybegynder
02. december 2008 - 11:53 Der er 11 kommentarer og
1 løsning

Hente id ud fra titlen/linket (?Id=xx)

God formiddag..

Situationen er den at jeg har lavet en slags nyhedssystem, hvor jeg udskriver alle nyhedernes overskrifter med et tilhørene link fra databasen.. Hver nyhed har så adressen "nyhed_display.aspx?Id=xx".. Dvs. hvis du trykker på nyheden med id nr. 17, så kommer man ind på "nyhed_display.aspx?Id=17".. Dette fungerer også som det skal.

Problemet ligger i at jeg så gerne vil have den til at hente nyheden med det pågældende Id på den side som man kommer til, men ikke ved hvordan jeg gør dette, hvis jeg ikke ønsker at bruge de indbyggede datalist/griedview funktioner..

Jeg ved at man i php kan lave en sql streng med følgende:
("SELECT * FROM news WHERE id=".$_GET['id']."")

Men dette fungerer ikke i asp.net har jeg erfaret :) Så hvordan gør jeg det?

Hvis det er nødvendigt med codebehind eksemplet skriver i bare..
Avatar billede keysersoze Guru
02. december 2008 - 12:28 #1
du kan hente værdien med Request.Querystring["id"]
Avatar billede d0t Nybegynder
02. december 2008 - 12:30 #2
I din Page_Load kan du tilføje din kode

protected void Page_Load(object sender, EventArgs e)
        {
          "SELECT * FROM news WHERE id=" + Request.Params["id"]";



        }
Husk dog at lave inputvalidering, så du undgår SQL Injections

Det bedst er at lave sql kaldet som en stored procedure
Avatar billede keysersoze Guru
02. december 2008 - 12:42 #3
ikke enig - stored procedures bør bruges til større operationer og ikke simple select-ting, derimod bør man bruge parametre.
Avatar billede doncarnage Nybegynder
02. december 2008 - 12:52 #4
d0t's eksempel virker som det skal, så tak for det ;)

Men hvad menes der med stored procedure/inputvalidering?

Jeg går lidt ud fra at det er en forespørgsel, hvor man vha. en simpel if sætning checker om Id er sat og hvis det ikke er tilfældet, så lukker igen for sql forbindelsen så den ikke kommer med en fejlmeddelelse eller lign..?
Avatar billede d0t Nybegynder
02. december 2008 - 12:56 #5
Så lidt

Ja, keysersoze.. du kan godt have ret.. - men omend plejer jeg at bruge storedprocedures til alt, omend det ikke er best practice.

Doncarnage, her er lidt at læse op på så :)
SQL Injections: http://da.wikipedia.org/wiki/Sql_injection
Avatar billede doncarnage Nybegynder
02. december 2008 - 13:11 #6
Har lige kigget lidt på linket du gav d0t..

Men hvordan skulle det blive et problem med det her nyhedssystem siger du så?

Der er sql strengen følgendende:
string strSQL = ("SELECT * from nyheder where Id=" + Request.Params["id"]);
Avatar billede d0t Nybegynder
02. december 2008 - 13:28 #7
hvis jeg i id'et i url skriver noget lignende:

'; drop table nyheder;

Så bliver sql strengen jo til

string strSQL = ("SELECT * from nyheder where Id=; drop table nyheder;");

Det vil være lidt farligt... :S
Avatar billede doncarnage Nybegynder
02. december 2008 - 15:54 #8
Ville det rent faktisk virke så? For så kan jeg da godt se at det er lidt riski :S

I så fald, hvordan ville jeg kunne gå ind og forhindre det? Kan se at der på wikipedia bliver anbefalet at special tegn filtres fra, men hvordan gør jeg lige det i mit "simple" tilfælde?

Hvis du ikke gider at svare på det er det også fair nok, da det er et tillægsspørgsmål ;) Har i hvert fald givet dig de fortjente points nu..
Avatar billede d0t Nybegynder
02. december 2008 - 22:18 #9
Du kan undgå det problem ved at bruge stored procedures..

en google søgning kan give dig svaret..

Hvis du efter den søgning ikke kan få det til at virke, så skriv igen ..

Så kan jeg fabrikere et eksempel til dig
Avatar billede keysersoze Guru
02. december 2008 - 22:46 #10
Avatar billede d0t Nybegynder
02. december 2008 - 22:58 #11
Hehe, og parametre ..

Men det er jo også det man benytter sig af i stored procedures.
Avatar billede arne_v Ekspert
03. december 2008 - 02:45 #12
Strengt taget er det parameter der gør forskellen.

Man kan kalde SP som dynamisk SQL og så har man samme risiko for SQL injection som
ved normal dynamisk SQL.

I praksis bruger man dog altid parametre med SP.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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