Posts Tagged “exempel”

Är superenkelt men samtidigt en av dom viktigare sakerna att hålla koll på om man ska göra en hyffsat interaktiv webbplats. Det finns två (enkla) sätt att göra detta på, GET och POST. Jag kommer att beskriva den första, GET.

Det hela bygger på klienten skickar något till servern och du tar hand om det och du gör något med det. Ett exempel; en webbutik. Du ser en meny med kategorier, klickar dig vidare och ser en lång lista av produkter. Det vore ju ganska dumt att göra en ny sida för varje produkt, därför skickar man med en variabel som bestämmer vad för något som ska visas.

http://www.enbrawebbutik.com/prod.aspx?id=89964

Här har du som användare klickat på något i en produktlista, prod.aspx är samma för alla produkter, men eftersom du också skickar med id=89964 så kan du bestämma vad för information du vill läsa upp ur databasen och fylla din sida med.

Men hur fångar jag den variabeln på min sida, prod.aspx, då?

Nästan enklare, något i den här stilen: string prodId = Request.QueryString["id"];
Request.QueryString’en hämtar fram det du väljer att skicka med när du ropar på sidan (prod.aspx?id=89964)
Oftast vill man lägga den här deklarationen i Page_Load() eller i en funktion som körs när sidan laddas, så inte användaren ska behöva klicka ytterligare för att fånga upp variabeln. Eftersom du frågar efter Request.Querystring så måste din variabel vara av typen string, om du inte konverterar först.

Vill du ha flera variabler till samma sida, kanske kategori också, går det lika bra;
prod.aspx?id=89964&category=2353

Du hämtar variablerna på precis samma sätt;
string prodId = Request.QueryString["id"];
string categoryId = Request.QueryString["category"];

Sen har du ju dina id’n, bara att göra något i stil med;
hamtaProdInfoSQL(”SELECT * FROM prod WHERE prodId = prodId AND category = categoryId”);

Värt att tänka på

Är att aldrig (läs ALDRIG) låta en GET vara en sql fråga, eller något annat som har för mycket inflytande på hur din kod fungerar. Tex; prod.aspx?id=select * from prod where prodId = 45342

Låt alltid variabeln vara skild från de funktionerna som ska använda den, och kontrollera din indata på något bra sätt så att användaren inte kan, av misstag eller avsiktligt, avslöja känsliga uppgifter eller radera poster i databasen.

Och varför inte då? Jo för då kan en användare lika gärna ändra i adressraden och göra något fult som tex prod.aspx?id=’ or select password from admin eller varför inte göra “drop” på hela din databas. Inte bra.

Exemplen ovan är anpassade för C# men fungerar lika bra i VB, fast du kanske behöver göra små modifikationer.

Comments Inga kommentarer »