Avatar billede bbbworld Nybegynder
17. juni 2004 - 17:17 Der er 7 kommentarer

Session ind i opdatering af database

Jeg har en database, hvor brugerne skal kunne opdatere oplysninger! Men hvordan kan jeg sikre mig, at det kun er den bruger, der er logget ind, hvis data opdateres. 

<%
Response.Expires = -1000 'Makes the browser not cache this page
Response.Buffer = True 'Buffers the content so our Response.Redirect will work

If Session("UserLoggedIn") <> "true" Then
    Response.Redirect("login2.asp")
End If
%>


<%
if request.session("UserLoggedIn") <> "" then
STRDBNAVN="database\databaselog.mdb"
DSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""& STRDBdatabaselog & "") 
Set Conn = Server.CreateObject("ADODB.Connection") 
Conn.Open DSN
 
strSQL = strSQL & "navn= '" & request("navn") & "', "
strSQL = strSQL & "efternavn= '" & request("efternavn") & "', "
strSQL = strSQL & "adresse= '" & request("adresse") & "', "
strSQL = strSQL & "telefon= '" & request("telefon") & "', "
strSQL = strSQL & "email= '" & request("email") & "', "
strSQL = strSQL & "foedselsdag= '" & request("foedselsdag") & "', "
strSQL = strSQL & "civil stand= '" & request("civil stand") & "', "
strSQL = strSQL & "born= '" & request("born") & "', "
strSQL = strSQL & "password= '" & request("password") & "', "
strSQL = strSQL & "Where id=" & request("id")


Conn.Execute(strSQL)

Conn.Close
Set Conn = Nothing
end if
%>
<form method="post" action="opdater.asp">
<input type="text" name="navn" size="20">
<input type="text" name="efternavn" size="20">
<textarea rows="2" name="civil stand" cols="20"></textarea>
<input type="text" name="telefon" size="20">
<input type="text" name="foedselsdag" size="20">
<textarea rows="2" name="civil stand" cols="20"></textarea>
<textarea rows="2" name="born" cols="20"></textarea>
<textarea rows="2" name="arbejde" cols="20"></textarea>
<input type="text" name="password" size="20">
<input type="text" name="password2" size="20">
<input type="submit" name="send" value="send">
</form>
Avatar billede tofte Juniormester
17. juni 2004 - 17:35 #1
Du benytter et felt Session("UserLoggedIn") som angiver at en bruger er logget ind eller ej. Dette skal bare udvides med noget som identificerer brugeren. Det nemmeste er hvis du gemmer et unkikt id, når du kontrollere brugerens password og brugernavn. Du kan evt bruge access's autonumber funktion, hvis du ikke allerede bruger den.

Efterfølgende skal du så bare køre SQL kommando .... WHERE id ="& session("loginid") istedet for request("id")
Avatar billede bbbworld Nybegynder
17. juni 2004 - 17:43 #2
Nu hedder min id "id", jeg skal så skrive således
strSQL = strSQL & "Where id=" & session("id") ?

Skal jeg stadig bruge

if request.session("UserLoggedIn") <> "" then
Avatar billede tofte Juniormester
17. juni 2004 - 17:49 #3
du må kalde den hvad du vil. Bare du husker at sætte session("etellerandetId") til id'et på den bruger som er logget ind. Og det nemmeste er som sagt når du validerer brugeroplysninger.
Avatar billede bbbworld Nybegynder
17. juni 2004 - 18:00 #4
Jeg kigger lige videre på det i morgen og har nok flere spørgsmål...
Avatar billede bbbworld Nybegynder
18. juni 2004 - 13:26 #5
Hvordan får jeg flettet update funktionen ind i overstående script, hvis det kun er de ændringer, der er foretaget der skal opdateres?
Avatar billede tofte Juniormester
20. juni 2004 - 18:00 #6
tror ikke helt jeg har forstået spørgsmålet, men det nemmeste er at opdatere det hele hver gang, hvis det er det du spørger om.
Avatar billede tofte Juniormester
20. juni 2004 - 18:03 #7
Har selv lavet noget lignende engang - håber det kan tjene som inspiration. Man kan også lave en kontrol på, hvilke felter der er ændret i, ved at gemme deres tidlige værdi i en variabel og så sammenligne de to når man trykker send, jeg kan dog bedst lide nedenstående.
<%
if Request.Form("action")="upd" then

    Set Connection = Server.CreateObject("ADODB.Connection")
    Connection.Open dbstring
    Connection.execute("UPDATE paint SET beskrivelse='"&Request.Form("beskrivelse")&"', sti='"&Request.Form("sti")&"', stithumb='"&Request.Form("stithumb")&"', navn='"&Request.Form("navn")&"', kort='"&Request.Form("kort")&"' WHERE id="&session("id"))
    connection.close
    set connection = nothing
%>

Data er gemt!
<BR><BR>
<A Href="main.asp">Klik her for at vende til forsiden</A>
<%
else
    Set Connection = Server.CreateObject("ADODB.Connection")
    Connection.Open dbstring
    Set SQL = Connection.execute("SELECT * FROM paint where id="&session("id"))
    dim sti,stithumb,kort,beskrivelse,navn
    sti = SQL("sti")
    stithumb = SQL("stithumb")
    kort = SQL("kort")
    beskrivelse = SQL("beskrivelse")
    navn = SQL("navn")
   
    connection.close
    set connection = nothing
%>
<form action="updpic.asp" method="post">
Navn : <input type="text" name="navn" value="<%=navn%>"><BR>
Kort beskrivelse : <input type="text" name="kort" value="<%=kort%>"><BR>
<textarea name="beskrivelse" rows="12" cols="53"><%=beskrivelse%></textarea><BR>
Sti : <input type="text" name="sti" value="<%=sti%>"><BR>
Sti-lille : <input type="text" name="stithumb" value="<%=stithumb%>"><BR>
<input type="hidden" name="action" value="upd">
<input type="hidden" name="id" value="<%=Request.querystring("id")%>">
<BR><input type="submit" name="send" value="Opdater">
</Form>

<%end if
%>
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