webForumDet fria alternativet

update efter update?

43 svar · 478 visningar · startad av crisse6

crisse6Medlem sedan dec. 20002 441 inlägg
#1

jag har en sida där man kan redigera sin info och när man klickar på ändra knappen så updateras ens post... = den får ett nytt id, som jag INTE tycker om :(

för sedan när man ska klicka på en länk "Visa info" ligger länken kvar på det gamla id:et..???? hur gör jag för att få den att uppdatera efter man ha redigerat sin info? jag skriver koden för sidan hamta.asp:

<%
Set Databas = Server.CreateObject("ADODB.Connection")
Set rsAndra = Server.CreateObject("ADODB.Recordset")
MdbFilePath = Server.MapPath("users.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ= " & MdbFilePath & ";"

SQL = "select * from users where id =" & request.querystring("id")

rsAndra.Open SQL, Databas, 1, 2

If rsAndra.EOF then
%>
Hittade inte någon medlem som du försökte ändra!
<%

%>
<% End If %>
<font face="Verdana" size="1">
<form name="andra" method="post" action="andrat.asp">
<p><font face="Verdana" size="1" color="black">Anv&auml;ndarnamn:<br>
<input type="text" name="Username" value="<%=rsAndra("username")%>" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
<p><font face="Verdana" size="1" color="black">L&ouml;senord:<br>
<input type="text" name="Password" value="<%=rsAndra("password")%>" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
<p><font face="Verdana" size="1" color="black">Emejl:<br>
<input type="text" name="E-post" value="<%=rsAndra("E-post")%>" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
<p><font face="Verdana" size="1" color="black">Namn:<br>
<input type="text" name="Namn" value="<%=rsAndra("namn")%>" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
<p><font face="Verdana" size="1" color="black">Efternamn:<br>
<input type="text" name="Efternamn" value="<%=rsAndra("efternamn")%>" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
<p><font face="Verdana" size="1" color="black">Mobilnummer:<br>
<input type="text" name="Mobil" value="<%=rsAndra("mobil")%>" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
<p><font face="Verdana" size="1" color="black">Du bor i:<br>
<input type="text" name="bor" value="<%=rsAndra("bor")%>" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
<font face="Verdana" size="1" color="black">Fakta om dig själv:<br>
<textarea name="Fakta" rows="6"
 cols="30" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"><%=rsAndra("Fakta")%></textarea></font><br>
<p><font face="Verdana" size="1" color="black"><input type="submit" value="&Auml;ndra" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
</form>

</font>

och här är sidan andrat.asp:

<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("users.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ= " & MdbFilePath & ";"

SQL = "UPDATE users SET username = '" & request.form("username") & "', password = '" & request.form("password") & "', e-post = '" & request.form("e-post") & "', namn = '" & request.form("namn") & "', efternamn = '" & request.form("efternamn") & "', mobil = '" & request.form("mobil") & "', bor = '" & request.form("bor") & "', fakta = '" & request.form("fakta") & "' WHERE username = '" & Request.Form("username") & "'"
%>

sådär, nu kan ni nog lösa det, grabbar :e

[Redigerat av crisse6 den 28 feb 2001]

MattiasWMedlem sedan jan. 2000143 inlägg
#2

Några oklarheter jag hittade:

I.
Du hämtar användaren genom att söka på id men du uppdaterar genom att söka på username. Varning varning!!
Det är stor risk att man uppdatera någon annans uppgifter. Vad händer om man ändrar sitt username!!??

Gör så här:
Lägg till ett hidden-fält i formuläret med användarens id. Sök sedan på detta när du uppdaterar. Användaren kan då bara uppdatera sina egna uppgifter.

OBS! Någonting du kanske skall tänka på. Eftersom du hämtar upp användareformuläret med id, som är en parameter, är det möjligt att se och ändra andras uppgifter. Har man inte adminrättigheter bör du hämta id från en sessionsvariabel eller liknande. Gör även samma koll vid uppdateringen.

II.
Du nämner att man får ett nytt ID. Kan bero på att man uppdaterat någon annan användares uppgifter.

crisse6Medlem sedan dec. 20002 441 inlägg
#3

okej, har gjort som du sa Mattias, men kolla nu om jag verkligen har gjort rätt:

rediger.asp (sidan som har länken för att hämta ens information:

<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("users.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ= " & MdbFilePath & ";"

SQL = "Select * From users Where username = '" & session("username") & "'"
Set rsAndra = Databas.Execute(SQL)

Response.Write "<a href=""hamta.asp?id=" & rsAndra("id") & """>Ändra min info</a><br><br>"
%>

och sedan hamta.asp (där ens information hämtas till formuläret):

<%
Set Databas = Server.CreateObject("ADODB.Connection")
Set rsAndra = Server.CreateObject("ADODB.Recordset")
MdbFilePath = Server.MapPath("users.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ= " & MdbFilePath & ";"

SQL = "select * from users where id =" & request.querystring("id")

rsAndra.Open SQL, Databas, 1, 2

If rsAndra.EOF then
%>
Hittade inte någon medlem som du försökte ändra!
<%

%>
<% End If %>
<font face="Verdana" size="1">
<form name="andra" method="post" action="andrat.asp">
<input type="hidden" name="id" value="<%=rsAndra("id")%>"
<p><font face="Verdana" size="1" color="black">Anv&auml;ndarnamn:<br>
<input type="text" name="Username" value="<%=rsAndra("username")%>" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
<p><font face="Verdana" size="1" color="black">L&ouml;senord:<br>
<input type="text" name="Password" value="<%=rsAndra("password")%>" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
<p><font face="Verdana" size="1" color="black">Emejl:<br>
<input type="text" name="E-post" value="<%=rsAndra("E-post")%>" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
<p><font face="Verdana" size="1" color="black">Namn:<br>
<input type="text" name="Namn" value="<%=rsAndra("namn")%>" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
<p><font face="Verdana" size="1" color="black">Efternamn:<br>
<input type="text" name="Efternamn" value="<%=rsAndra("efternamn")%>" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
<p><font face="Verdana" size="1" color="black">Mobilnummer:<br>
<input type="text" name="Mobil" value="<%=rsAndra("mobil")%>" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
<p><font face="Verdana" size="1" color="black">Du bor i:<br>
<input type="text" name="bor" value="<%=rsAndra("bor")%>" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
<font face="Verdana" size="1" color="black">Fakta om dig själv:<br>
<textarea name="Fakta" rows="6"
 cols="30" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"><%=rsAndra("Fakta")%></textarea></font><br>
<p><font face="Verdana" size="1" color="black"><input type="submit" value="&Auml;ndra" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
</form>

</font>

sedan andrat.asp (den sidan som ska updatera det man ändrat):

<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("users.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ= " & MdbFilePath & ";"

SQL = "UPDATE users SET id = '" & request.form("username") & "', password = '" & request.form("password") & "', e-post = '" & request.form("e-post") & "', namn = '" & request.form("namn") & "', efternamn = '" & request.form("efternamn") & "', mobil = '" & request.form("mobil") & "', bor = '" & request.form("bor") & "', fakta = '" & request.form("fakta") & "' WHERE username = '" & Request.Form("username") & "'"
%>

asså, jag får inget felmeddelande, det bara händer inget i databasen :(

pssst... vet någon hur man får en liten alert ruta om att typ "Dina uppgifter blev ändrade", jag vet, säkert javascript, men hur ska det ligga i en asp kod? :)

EclipseMedlem sedan juli 20003 741 inlägg
#4

Fan va mycket kåd!! Det borde vara förbjudet att ha så långa stycken för en sak som gör så lite...

---
kolla denna:

Min post:
hamta.asp?ID=14

Någon annans post:
hamta.asp?ID=12

Du har ju session("ID"). Använd det hela vägen i så fall! :-)

------------------
Never underestimate your opponents.

crisse6Medlem sedan dec. 20002 441 inlägg
#5

det måste finnas någon som kan hjälpa mig, eclipse, jag fick inte din lösning att funka... :( kan ingen detta... jag menar... det är ju själva sql-satsen som buggar eftersom den inte uppdaterar ngt... men inga felmeddelanden.... konstigt :q

MattiasWMedlem sedan jan. 2000143 inlägg
#6

Ser att du har lite kvar att göra :)

Har du någon inloggning? Förmodligen. Du söker säkert då i users tabellen. Spara undan id fältet i sessionen.
Id är väl ett unikt nummer för varje användare?

Använd sedan id vid varje sökning i users för att hitta RÄTT användare.

Nu till koden:

-- rediger.asp --
Du behöver inte lägga på id som en parameter till hamta.asp. Denna hämtar du från sessionen.
Ändra

Response.Write "<a href=""hamta.asp?id=" & rsAndra("id") & """>Ändra min info</a><br><br>"

Till

Response.Write "<a href=""hamta.asp"">Ändra min info</a><br><br>"

-- hamta.asp --
Ändra

SQL = "select * from users where id =" & request.querystring("id")

Till

SQL = "select * from users where id =" & session("id")

-- andrat.asp --
Här ser jag konstigheter. Du söker fortfarande efter användaren med hjälp av username. Ändra till id. Uppdatera inte id fältet.
Ändra

SQL = "UPDATE users SET id = '" & request.form("username") & "', password = '" & request.form("password") & "', e-post = '" & request.form("e-post") & "', namn = '" & request.form("namn") & "', efternamn = '" & request.form("efternamn") & "', mobil = '" & request.form("mobil") & "', bor = '" & request.form("bor") & "', fakta = '" & request.form("fakta") & "' WHERE username = '" & Request.Form("username") & "'"
%>

Till

SQL = "UPDATE users SET password = '" & request.form("password") & "', e-post = '" & request.form("e-post") & "', namn = '" & request.form("namn") & "', efternamn = '" & request.form("efternamn") & "', mobil = '" & request.form("mobil") & "', bor = '" & request.form("bor") & "', fakta = '" & request.form("fakta") & "' WHERE id = '" & session("id") & "'"
%>

/Hoppas allt blev rätt

LarsGMedlem sedan dec. 200012 465 inlägg
#7

Jag ser ingen execute av din update-sats i koden.

Om man tittar på din update så är det några saker där som är lite skumma.

Du försöker uppdatera kolumnen ID till det som står i username fältet.

Att använda e-post som kolumnnamn är inget bra då bindestreck betyder minus i SQL. Jag skulle nog döpa om den kolumnen.

I ditt where villkor använder du username, borde du inte använda ID där

------------------
essentitia preter non sans multiplicandum

EclipseMedlem sedan juli 20003 741 inlägg
#8

Öööhh... jaha, du har inte gett session("ID") ett värde!?

Kolla detta:

response.write session.sessionID
response.write session.sessionID()

Vet ej vilken som funkar men det ger dig en harang på en attans massa tecken som ingen normal människa fatttar.

Kolla detta :

ID = "666"
session("ID") = "666"
response.write session("ID") & " " & ID

Hajar du? Det kommer bli så här:

666 666

Det första ID är en vanlig variabel som försvinner när sidan är slut. session("ID") är också en variabel men den sparas i serverns minne i 30 minuter. Det är defaultinställningen (eller var det 20 min!?) och det kan man ändra.

Vi ska inte gå FÖR djupt, det viktiga är att session("ID") och variabeln ID är två helt olika saker.

Var det detta du frågade!?

------------------
Never underestimate your opponents.

crisse6Medlem sedan dec. 20002 441 inlägg
#9

hmm.... ja, nu du mattias, jag har inte en aning om det är rätt nu, men vad menar du först med "Spara undan id fältet i sessionen"?

svar ja, jag har inloggning, men dom enda sessionerna jag har (vad jag vet) är session("password") och session("username") men annars tror jag inte det finns någon... kolla nu om jag har gjort rätt (ni får med formulär för att se om allt är som det :) )

redigera.asp

<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("users.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ= " & MdbFilePath & ";"

SQL = "Select * From users Where username = '" & session("username") & "'"
Set rsAndra = Databas.Execute(SQL)

Response.Write "<a href=""hamta.asp"">Ändra min info</a><br><br>"
%>

hamta.asp

<%
Set Databas = Server.CreateObject("ADODB.Connection")
Set rsAndra = Server.CreateObject("ADODB.Recordset")
MdbFilePath = Server.MapPath("users.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ= " & MdbFilePath & ";"

SQL = "select * from users where id =" & session("id")

rsAndra.Open SQL, Databas, 1, 2

If rsAndra.EOF then
%>
Hittade inte någon medlem som du försökte ändra!
<%

%>
<% End If %>
<font face="Verdana" size="1">
<form name="andra" method="post" action="andrat.asp">
<p><font face="Verdana" size="1" color="black">Anv&auml;ndarnamn:<br>
<input type="text" name="Username" value="<%=rsAndra("username")%>" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
<p><font face="Verdana" size="1" color="black">L&ouml;senord:<br>
<input type="text" name="Password" value="<%=rsAndra("password")%>" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
<p><font face="Verdana" size="1" color="black">Emejl:<br>
<input type="text" name="E-post" value="<%=rsAndra("E-post")%>" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
<p><font face="Verdana" size="1" color="black">Namn:<br>
<input type="text" name="Namn" value="<%=rsAndra("namn")%>" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
<p><font face="Verdana" size="1" color="black">Efternamn:<br>
<input type="text" name="Efternamn" value="<%=rsAndra("efternamn")%>" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
<p><font face="Verdana" size="1" color="black">Mobilnummer:<br>
<input type="text" name="Mobil" value="<%=rsAndra("mobil")%>" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
<p><font face="Verdana" size="1" color="black">Du bor i:<br>
<input type="text" name="bor" value="<%=rsAndra("bor")%>" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
<font face="Verdana" size="1" color="black">Fakta om dig själv:<br>
<textarea name="Fakta" rows="6"
 cols="30" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"><%=rsAndra("Fakta")%></textarea></font><br>
<input type="hidden" name="id" value="<%=rsAndra("id")%>"
<p><font face="Verdana" size="1" color="black"><input type="submit" value="&Auml;ndra" style="font-family:Verdana; font-size:10; border-width:1; border-color:black; border-style:solid;"></font></p>
</form>

</font>

andrat.asp

<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("users.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ= " & MdbFilePath & ";"

SQL = "UPDATE users SET password = '" & request.form("password") & "', e-post = '" & request.form("e-post") & "', namn = '" & request.form("namn") & "', efternamn = '" & request.form("efternamn") & "', mobil = '" & request.form("mobil") & "', bor = '" & request.form("bor") & "', fakta = '" & request.form("fakta") & "' WHERE id = '" & session("id") & "'"

%>

jag vet, kanske mkt onödig kod? men jag vill vara säker ( känner mig som en mask ett hönshus he he )

MattiasWMedlem sedan jan. 2000143 inlägg
#10

Vi får först reda ut några saker. Kanske har jag missuppfattat dig.

Du har en tabell med alla användarna. Av din kod (om det stämmer) kan jag se att tabellen har kolumnerna id, username, password, e-post, mm.

Vad är id kolumnen för fält?
Om jag hade designat tabellen hade id kolumnen varit nyckel med en automatisk uppräkning. Alla användarna får ett unikt nummer.
Är det så?
I annat fall, vad har fältet för funktion?

men vad menar du först med "Spara undan id fältet i sessionen"?

Jag ser att du läser username från sessions-objektet.

SQL = "Select * From users Where username = '" & session("username") & "'"

Det betyder att du vid inloggningen sparar undan username i sessionen, eller?

OM nu id fältet är unikt för varje användare bör du göra samma sak med de. Dvs spara undan det i sessions-objektet.

Låt säga att nu id fältet INTE är vad jag tror. Det är då ingen stor sak att ändra din kod, bort med id kolumnen från dina selects.

Vad du nu måste se till är att två användare inte väljer samma username. När du i andrat.asp uppdaterar användaren måste du, OBS! Bara om användaren ändrar sitt username, kontrollera att det nya namnet inte är upptaget.
Du får inte glömma bort att ändra session("username") och session("password") med de nya värdena.

-- hamta.asp --

Ändra

SQL = "select * from users where id =" & session("id")

Till

SQL = "select * from users where username =" & session("username")

-- andra.asp --

1. Gör först kontrollen nya username är ledig

2. Ändra

SQL = "UPDATE users SET password = '" & request.form("password") & "', e-post = '" & request.form("e-post") & "', namn = '" & request.form("namn") & "', efternamn = '" & request.form("efternamn") & "', mobil = '" & request.form("mobil") & "', bor = '" & request.form("bor") & "', fakta = '" & request.form("fakta") & "' WHERE id = '" & session("id") & "'"

Till

SQL = "UPDATE users SET username = '" & request.form("username") & "', password = '" & request.form("password") & "', e-post = '" & request.form("e-post") & "', namn = '" & request.form("namn") & "', efternamn = '" & request.form("efternamn") & "', mobil = '" & request.form("mobil") & "', bor = '" & request.form("bor") & "', fakta = '" & request.form("fakta") & "' WHERE username = '" & session("username") & "'"

Observera att jag även uppdaterar username. Jag söker fram användaren med hjälp av sessionens username, inte formulärets.

3. Spara undan username och password i sessionen.

/Nu har du två alternativ.

crisse6Medlem sedan dec. 20002 441 inlägg
#11

okej, se om du fattar bättre nu, id fältet i min databas är som du säger en räknare som ger ett unikt id för varje ny person.

asså jag fattar ingetting efter att jag har prövat dina koder mattias... för det första, ska det inte vara querystring länk till hamta.asp? jag vet inte, men tror sig någon att den skulle kunna binda i hop koderna så att allt stämmer med varandra, för nu verkar det vara en enda stor röra :(

mvh crisse

MattiasWMedlem sedan jan. 2000143 inlägg
#12

Hehe

Vi får ta det i små potioner

Bra att id är unik för användaren. Glöm då alternativ två, se mitt tidigare inlägg.

Jag föreslår att du använder id för att matcha användare i userstabellen mot inloggad användare på hemsidan. Till vår hjälp har vi sessionsobjektet.
Är du med?
Du använder ju redan den tekniken, men på (i mitt tycke) fel sätt.

Flikar in ett svar på frågan "ska det inte vara querystring länk till hamta.asp?". Behövs inte om du följer mitt råd. Varför inte då? Du har sparat undan id i sessionen och kan använda denna för att hitta åt användaren i userstabellen.
Läs id från sessionen i stället för från querystring.

För det första måste du spara undan id i sessionen. Vad menar jag?
Id är fältet id i tabellen users. När du loggar in kontrollerar du username och password. Du söker säker efter användarens post i userstabellen. När du hittar den skall du hämta ut id och spara i sessionen.

session("id") = rs("id")
crisse6Medlem sedan dec. 20002 441 inlägg
#13

he he... jag är sjuk idag så jag är lite trögfattad :(

men asså, mina kontroller av sessioner vid inloggning ligger i inkluderade filer... var ska jag lägga din lilla snutt, i vilken sida? ska du kanske kolla på inkluderingsfilerna eller?

hoppas du har tålamod :e

MattiasWMedlem sedan jan. 2000143 inlägg
#14

Ok visa inkluderingsfilerna som har med inloggningen att göra.

crisse6Medlem sedan dec. 20002 441 inlägg
#15

här är den som kollar vanliga användare alltså inte admin!

<% '====================================================================================================================== %>
<% ' Kontrollera användarnamn, lösenord och behörighet %>
<% '====================================================================================================================== %>

<%	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\inetpub\wwwroot\groda\users.mdb"

	Set RecSet = Server.CreateObject("ADODB.Recordset") %>

<% Visa = "SELECT * FROM users"
   RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic

	X = FALSE

	Do Until X = TRUE OR RecSet.EOF

	If RecSet("Username") = Session("Username") Then
	X = TRUE
	Exit Do
	End If

	RecSet.MoveNext

	Loop

	If X = TRUE Then

		Y = FALSE
		Do Until Y = TRUE OR RecSet.EOF

		If RecSet("Password") = Session("Password") Then
		Y = TRUE
		Exit Do
		End If

		RecSet.MoveNext

		Loop

	End If

	If X = FALSE Then 
	Response.Write "Jag tror nog att du råkade skriva in fel användarnamn!"

	ElseIf Y = FALSE Then
	Response.Write "Du kan nog ha anget ett ogiltligt lösenord!"

	End If

	If X = TRUE AND Y = TRUE Then %>
MattiasWMedlem sedan jan. 2000143 inlägg
#16

Hehe du har tagit detta från IDG va?

Vill inte strula till det ännu mer men du kan läsa en tidigare artikel om IDGs ASP-skript, http://cgi.webforum.nu/wf/Forum11/HTML/003066.html.

Ok jag struntar i dom inläggen.

efter sista raden, som är "If X = TRUE AND Y = TRUE Then %>" så lägger du in

session("id") = RecSet("id")
...
End if

dvs.
När både X och y är sanna har vi hittat användarens post i userstabellen. Inte helt sannt, men som sagt jag struntar i de.

Vi hämtar informationen från id-fältet och sparar undan det i sessionen.

Återgår till koden

-- redigera.asp --

Hämta användaren med hjälp av session("id"). På samma sätt som du gör i hamta.asp

-- hamta.asp --

OK

-- andrat.asp --

Du glömmer att uppdatera username

Som LarsG nämde så saknas även en execute av SQL'en mot databsen.

/Nu borde det fungera

crisse6Medlem sedan dec. 20002 441 inlägg
#17

okej, har gjort allt detta nu, men det är fel :( nu kan man inte logga in, alltså, inga felmeddelande, men det står att man angivit fel användarnamn... inte bra! kolla nu på alla filer som beror detta ämne:

kontrollfilen vid inloggning:

<% '====================================================================================================================== %>
<% ' Kontrollera användarnamn, lösenord och behörighet %>
<% '====================================================================================================================== %>

<%	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\inetpub\wwwroot\groda\users.mdb"

	Set RecSet = Server.CreateObject("ADODB.Recordset") %>

<% Visa = "SELECT * FROM users"
   RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic

	X = FALSE

	Do Until X = TRUE OR RecSet.EOF

	If RecSet("Username") = Session("Username") Then
	X = TRUE
	Exit Do
	End If

	RecSet.MoveNext

	Loop

	If X = TRUE Then

		Y = FALSE
		Do Until Y = TRUE OR RecSet.EOF

		If RecSet("Password") = Session("Password") Then
		Y = TRUE
		Exit Do
		End If

		RecSet.MoveNext

		Loop

	End If

	If X = FALSE Then 
	Response.Write "Jag tror nog att du råkade skriva in fel användarnamn!"

	ElseIf Y = FALSE Then
	Response.Write "Du kan nog ha anget ett ogiltligt lösenord!"

	If X = TRUE AND Y = TRUE Then 
	session("id") = RecSet("id")
	End If
	%>

sedan redigera.asp:

<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("users.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ= " & MdbFilePath & ";"
SQL = "Select * From users Where username = '" & session("username") & "'"
Set rsAndra = Databas.Execute(SQL)

Response.Write "<a href=""hamta.asp"">Ändra min info</a><br><br>"
%>

hamta.asp:

<%
Set Databas = Server.CreateObject("ADODB.Connection")
Set rsAndra = Server.CreateObject("ADODB.Recordset")
MdbFilePath = Server.MapPath("users.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ= " & MdbFilePath & ";"
SQL = "select * from users where id =" & session("id")

rsAndra.Open SQL, Databas, 1, 2

If rsAndra.EOF then
%>
Hittade inte någon medlem som du försökte ändra!
<%

%>
'#### Här efter kommer formuläret#####

sedan har vi andrat.asp:

<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("users.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ= " & MdbFilePath & ";"

SQL = "UPDATE users SET username = '" & request.form("username") & "', password = '" & request.form("password") & "', e-post = '" & request.form("e-post") & "', namn = '" & request.form("namn") & "', efternamn = '" & request.form("efternamn") & "', mobil = '" & request.form("mobil") & "', bor = '" & request.form("bor") & "', fakta = '" & request.form("fakta") & "' WHERE username = '" & session("username") & "'"
Databas.Execute(SQL)
%>

varför får jag en känsla av små irriterade människor som tycker jag har skrivit lite för mkt kod? :e

crisse6Medlem sedan dec. 20002 441 inlägg
#18

fråga till dig mattias, tycker du att jag ska byta idg´s inloggningsskript mot det som någon av grabbarna skrev i tråden du gav mig?

McMillerMedlem sedan okt. 2000210 inlägg
#19

tycker inte du ska använda idg:s system. lite osäkert. använde det för ett pra månader sen och upptäckte att man kunde använda en användares lösenord på en annan användare och logga in påden användaren....inte så värst bra...

------------------
//McMiller

"Jag har tiden på min sida när jag gör diamanter av guld..."

MattiasWMedlem sedan jan. 2000143 inlägg
#20

Håller med McMiller.

Men en sak i taget. :)

Oj. Felet beror nog på den sista End If'en i inc filen. Fel av mig.

Ta bort End If'en efter session("id") = RecSet("id")

Ja jag tycker du skall byta ut inloggningen. Ett tips är den som brw visade.

Genererad på 391 ms · cache AV · v20260730165559-full.f96bc7eb