Avatar billede riishoj Nybegynder
10. maj 2002 - 11:03 Der er 15 kommentarer og
1 løsning

"Smutvej" ved login

Jeg har en side, som kun kan åbnes med username og password. På siden kan man bl.a. opdatere en tabel i en database. Problemet er, at når man kommer til formen, hvor man opdaterer data, så vises id i url'en. Det bevirker jo, at man kan komme ind og ændre en anden brugers date ved at ændre id i url'en.
Kan nogen finde ud af at lukke denne smutvej?
Scriptet ser sådan ud:

<%
' Databaseforbindelse
ConnString = "DSN=riishojwebsoftdkdsn"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ConnString

if request.servervariables("REQUEST_METHOD") = "POST" then
  strSQL = "UPDATE biler SET Bilmaerke = '" & Request.Form("bilmaerke") & "', Model = '" & Request.Form("Model") & "', Aargang = '" & Request.Form("Aargang") & "', km = '" & Request.Form("km") & "', Pris = '" & Request.Form("Pris") & "' WHERE Id = " & Request.Form("ID")
  conn.execute(strSQL)
  conn.Close
  response.redirect("index2.asp") 'Send tilbage til hoved siden efter opdatering
end if

strSQL = "SELECT * FROM biler WHERE ID = "& request.Querystring("bilid")
set rs = conn.execute(strSQL)
if not rs.EOF then
%>
  <!-- Lav HTML form -->
  <form action="opdater.asp" method="post">
  <input type="hidden" name="id" value="<%=rs("ID")%>"><br>
  <input type="text" name="bilmaerke" value="<%=rs("bilmaerke")%>"> <br>
  <input type="text" name="model" value="<%=rs("model")%>"> <br>
  <input type="text" name="Aargang" value="<%=rs("Aargang")%>"> <br>
  <input type="text" name="km" value="<%=rs("km")%>"> <br>
  <input type="text" name="pris" value="<%=rs("pris")%>"> <br>
  <input type="submit" name="Gem" value="Gem">
  </form>
</body>
</html>
<%
end if
conn.close
%>
Avatar billede a1a1 Novice
10. maj 2002 - 11:16 #1
er det din egen server???
Avatar billede krisbjoern Nybegynder
10. maj 2002 - 11:19 #2
Du kan "lagre" ID-værdien i en Session i stedet.
Denne kan ikke ses i URL.
Altså:
strSQL = "SELECT * FROM biler WHERE ID = "& Session("bilid")

Hvor du har skrevet den indtastede værdi ind i Session objektet med
Session("bilid") = Request.Form("bilid") **Eller hvordan det nu er i DIN situation.

Se evt. mere om Sessions på www.html.dk under tutorilas.

Venlig Hilsen
Kristian Bjørn
KB3-MultiMedieDesign
Avatar billede riishoj Nybegynder
10. maj 2002 - 11:22 #3
a1>nej, det er ikke min egen server!
krisbjoern> prøver lige dit forslag
Avatar billede riishoj Nybegynder
10. maj 2002 - 11:36 #4
Jeg får fejlen

ADODB.Recordset.1 error '80004005'

SQLState: 37000
Native Error Code: -3100
[INTERSOLV][ODBC SequeLink driver][ACCESS][Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'ID ='.

Den er jeg stødt på før, men kan sørme ikke huske hvad jeg gjorde for at løse det problem.
Avatar billede krisbjoern Nybegynder
10. maj 2002 - 11:49 #5
hmmm...
Session("bilid") SKAL have en værdi på det tidspunkt hvor du bruger den i din SQL-sætning.
Hvis der ER skrevet en værdi til Session("bilid") kan det være at du skal årøve med enkelt appostrof:
strSQL = "SELECT * FROM biler WHERE ID = '"& Session("bilid") & "'"

Håber du finder ud af det - jeg er ikke ved computeren mere i dag ;o)

Venlig Hilsen
Kristian Bjørn
Avatar billede riishoj Nybegynder
10. maj 2002 - 12:03 #6
Kan nogen fortælle, hvor jeg skal indsætte den Session?
Avatar billede mccannon Nybegynder
10. maj 2002 - 12:39 #7
umm hvor sætter du helt nøjagtigt den session variable ?
Avatar billede riishoj Nybegynder
10. maj 2002 - 12:44 #8
Jeg har vist ikke sat den, det er vel problemet. Brugerid og bilid er to forskellige tabeller, og brugeren er selvfølgelig logget ind med brugerid. Hvordan laver jeg en session på bilid og hvor skal den sættes ind i scriptet?
Avatar billede mccannon Nybegynder
10. maj 2002 - 13:08 #9
ahh okay..
når du fanger de intastede værdier from din submit form
så kan du sætte Session("bilid") = request.form("ID")

Normalt ville jeg heller ikke anbefale at bruger requset.form i en sql sætning, det er lettere at overskue hvis du putter værdierne fra form ind i nogle variabler og så bruger de variabler i din sql sætning

min icq er 5468699 hvis du vil ahve mere hjælp :)
Avatar billede eagleeye Praktikant
10. maj 2002 - 13:09 #10
Du kan i nummer to SQL tilføje Session("brugerID") så maner sikker på at det er den rigtige bruger:

strSQL = "SELECT * FROM biler WHERE ID = "& request.Querystring("bilid") & " AND forhandlerID = " & Session("brugerID")

Så kan du tilføje en else på din side:
</html>
<%
else
  Response.write "Ukendt bil"
end if
Avatar billede mccannon Nybegynder
10. maj 2002 - 13:10 #11
kommer lidt med et lille eksempel..2 sec
Avatar billede mccannon Nybegynder
10. maj 2002 - 13:14 #12
<%
response.buffer = true

If request.form <> "" then
    Session("Allyid") = request.form("AID")
    clanname = request.form("clanname")
    points = request.form("points")

    Set ObjConn = Server.createobject("ADODB.Connection")
    ObjConn.open "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & server.mappath("database.mdb")
   
    clanname = Replace(clanname,"'","´")
   
   
    SQL = "Update tblally set "
    SQL = SQL & "Allyname='" & clanname & "', "
    SQL = SQL & "Realm_points='" & points & "' "
    SQL = SQL & "where AllyID=" & Session("Allyid")
   
    ObjConn.execute(SQL)
    Objconn.close
    Set ObjConn = Nothing
   
    response.redirect "dinside.asp"

end if
Avatar billede riishoj Nybegynder
10. maj 2002 - 13:24 #13
hej eagleeye - jeg håbede du kom på banen. Du løste bare lige mit problem. Tak igen! Send et svar.
Avatar billede eagleeye Praktikant
10. maj 2002 - 13:26 #14
Det gør jeg så :)
Avatar billede riishoj Nybegynder
10. maj 2002 - 13:28 #15
mccannon>tak for hjælpen, men eagleeyes forslag passede bare lige til mit script.
Avatar billede janette Nybegynder
10. maj 2002 - 13:36 #16
Jer er godt nok nybegynder men kan "smutvejen" ikke lukkes ved at bruge metoden get i stedet for metoden post?
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
Kurser inden for grundlæggende programmering

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