31. maj 2003 - 18:30Der er
86 kommentarer og 1 løsning
loginsystem i asp
Er der nogen der kan konstruere et loginsystem
Jeg har en database men en tabel "tblmedlemmer" hvor brugernavn og password er anført for hver person.
Der jeg ønsker er en login side som sender medlemmet til en side hvor hans brugernavn og password er anført hvis brugernavn og password er korekt anført.
Siden som man kommer til skal desuden forudsætte at man har indtastet rigtigt brugernavn og password.
Jeg håber det kan laves hurtigt da jeg skal have det færdigt senest mandag den 02/06-2003
Støv, fibre og metalliske partikler kan påvirke både uptime, levetid og driftssikkerhed. Derfor arbejder flere datacentre systematisk med contamination control.
dine henvisninger ser da meget fine ud, men jeg har ikke så meget tid og skal lave en masse så jeg ville spørge dig om du var interesseret i at lave systemet for mig???
Her er koden til dit login system, du kan kalde filen her for login.asp Du kan lige rette koden til så den passer med database fil nanvet og kolonne navne.
<html> <head><title>Login side</title></head> <body> <% if Request.ServerVariables("REQUEST_METHOD") = "POST" then
Set Conn = Server.CreateObject("ADODB.Connection") Set rs = Server.CreateObject("ADODB.Recordset") Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db101.mdb")
password = Replace(Request.Form("password"),"'","''") navn = Replace(Request.Form("navn"),"'","''")
SQL = "SELECT * FROM tblmedlemmer WHERE navn = '" & navn & "' AND pass = '" & password & "'" Set rs = Conn.Execute(SQL) if NOT rs.EOF then Session("login") = "loged_in" Session("brugernavn") = rs("navn") Session("password") = rs("pass") else Session("login") = "" end if rs.Close Set rs = nothing Conn.Close Set Conn = nothing if Session("login") = "loged_in" then 'BRUGER ER LOGGET IND SEND HAM VIDRE TIL EN BESKYTTET FIL
Response.Redirect("side.asp") end if end if %> <center><table> <form action="" method="post"> <tr><td>Navn:</td><td><input type="text" name="navn"></td></tr> <tr><td>Password:</td><td><input type="password" name="password"></td></tr> <tr><td colspan=2><input type="submit" name="Login" value="Login"></td></tr> </form> </table></center> </body> </html>
Den side du om,taler kan du lave sådan her og den skal hedde side.asp
<% if Session("login") <> "loged_in" then Response.Redirect("login.asp") else %> <html><head></head> <body> Dit brugernavn er : <%=Session("brugernavn") %><br> Dit password er : <%=Session("password") %><br>
Så skal du lave en form hvor man kan rette i det. Pas på med ret af brugernavn da man første skal tjekke om en anden har det samme brugernavn inden man ændre det.. Et eks:
<% if Session("login") <> "loged_in" then Response.Redirect("login.asp") else %> <html> <head></head> <body> <% Set Conn = Server.CreateObject("ADODB.Connection") Set rs = Server.CreateObject("ADODB.Recordset") Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db101.mdb")
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
password = Replace(Request.Form("password"),"'","''") navn = Replace(Request.Form("navn"),"'","''")
SQL = "UPDATE tblmedlemmer SET adgangskode = '" & password & "' WHERE ID = " & Session("brugerID") Conn.Execute(SQL) Conn.Close Set Conn = nothing Response.Redirect(Request.ServerVariables("SCRIPT_NAME")) end if
SQL = "SELECT * FROM tblmedlemmer WHERE ID = " & Session("brugerID") Set rs = Conn.Execute(SQL) %> <center><table> <form action="" method="post"> <tr><td>Password:</td><td><input type="text" name="password" value="<%=rs("adgangskode")%>"></td></tr> <tr><td colspan=2><input type="submit" name="Gem" value="Gem"></td></tr> </form> </table></center> </body> </html> <% rs.Close Set rs = Nothing Conn.Close Set Conn = Nothing end if %>
<% if Session("login") <> "loged_in" then Response.Redirect("login.asp") else %> <html> <head></head> <body> <% Set Conn = Server.CreateObject("ADODB.Connection") Set rs = Server.CreateObject("ADODB.Recordset") Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db101.mdb")
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
password = Replace(Request.Form("password"),"'","''") navn = Replace(Request.Form("navn"),"'","''")
SQL = "SELECT brugernavn FROM tblmedlemmer WHERE ID <> " & Session("ID") & " AND brugernavn = '" & navn & "'" Set rs = Conn.Execute(SQL) if rs.EOF then
SQL = "UPDATE tblmedlemmer SET brugernavn = '" & navn & "', adgangskode = '" & password & "' WHERE ID = " & Session("brugerID")
Conn.Execute(SQL) indsat = true else indsat = false Response.write "Brugernavnet findes" end if Conn.Close Set Conn = nothing
if indsat = true then Response.Redirect(Request.ServerVariables("SCRIPT_NAME")) end if end if
SQL = "SELECT * FROM tblmedlemmer WHERE ID = " & Session("brugerID") Set rs = Conn.Execute(SQL) %> <center><table> <form action="" method="post"> <tr><td>Brugernavn:</td><td><input type="text" name="navn" value="<%=rs("brugernavn")%>"></td></tr> <tr><td>Password:</td><td><input type="text" name="password" value="<%=rs("adgangskode")%>"></td></tr> <tr><td colspan=2><input type="submit" name="Gem" value="Gem"></td></tr> </form> </table></center> </body> </html> <% rs.Close Set rs = Nothing Conn.Close Set Conn = Nothing end if %>
Den er måske kommet uden for end if, eks på siden :
<% if Session("login") <> "loged_in" then Response.Redirect("login.asp") else %> <html><head></head> <body> <center>Velkommen til din side</center> <br><br><br>
<a href="retdata.asp">Ret min profil.</a> </body> </html> <% end if %>
Du kan selv udvide formen med flere felter som en bruger kan rette i :
<% if Session("login") <> "loged_in" then Response.Redirect("login.asp") else %> <html> <head></head> <body> <% Set Conn = Server.CreateObject("ADODB.Connection") Set rs = Server.CreateObject("ADODB.Recordset") Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db101.mdb")
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
password = Replace(Request.Form("password"),"'","''") navn = Replace(Request.Form("navn"),"'","''")
SQL = "SELECT brugernavn FROM tblmedlemmer WHERE ID <> " & Session("ID") & " AND brugernavn = '" & navn & "'" Set rs = Conn.Execute(SQL) if rs.EOF then
SQL = "UPDATE tblmedlemmer SET brugernavn = '" & navn & "', adgangskode = '" & password & "' WHERE ID = " & Session("brugerID")
Conn.Execute(SQL) indsat = true Conn.Close Set Conn = nothing else indsat = false Response.write "Brugernavnet findes" end if
if indsat = true then Response.Redirect(Request.ServerVariables("SCRIPT_NAME")) end if end if
SQL = "SELECT * FROM tblmedlemmer WHERE ID = " & Session("brugerID") Set rs = Conn.Execute(SQL) %> <center><table> <form action="" method="post"> <tr><td>Brugernavn:</td><td><input type="text" name="navn" value="<%=rs("brugernavn")%>"></td></tr> <tr><td>Password:</td><td><input type="text" name="password" value="<%=rs("adgangskode")%>"></td></tr> <tr><td colspan=2><input type="submit" name="Gem" value="Gem"></td></tr> </form> </table></center> </body> </html> <% rs.Close Set rs = Nothing Conn.Close Set Conn = Nothing end if %>
Ja, prøv at sætte [] omkring kolonne medlem-adresse da SQL fortolkeren ser det som et minus tegn og ikke bindestreng forsøger at trække de to kolonner fra hinanden:
man kan du ikke dele denne kode op således jeg selv kan bestemme hvor fejlmeddelelsen skal komme
<% Set Conn = Server.CreateObject("ADODB.Connection") Set rs = Server.CreateObject("ADODB.Recordset") Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db101.mdb")
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
password = Replace(Request.Form("password"),"'","''") navn = Replace(Request.Form("navn"),"'","''")
SQL = "SELECT brugernavn FROM tblmedlemmer WHERE ID <> " & Session("ID") & " AND brugernavn = '" & navn & "'" Set rs = Conn.Execute(SQL) if rs.EOF then
SQL = "UPDATE tblmedlemmer SET brugernavn = '" & navn & "', adgangskode = '" & password & "' WHERE ID = " & Session("brugerID")
Conn.Execute(SQL) indsat = true Conn.Close Set Conn = nothing else indsat = false Response.write "Brugernavnet findes" end if
if indsat = true then Response.Redirect(Request.ServerVariables("SCRIPT_NAME")) end if end if
SQL = "SELECT * FROM tblmedlemmer WHERE ID = " & Session("brugerID") Set rs = Conn.Execute(SQL) %>
<% Set Conn = Server.CreateObject("ADODB.Connection") Set rs = Server.CreateObject("ADODB.Recordset") Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db101.mdb")
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
password = Replace(Request.Form("password"),"'","''") navn = Replace(Request.Form("navn"),"'","''")
SQL = "SELECT brugernavn FROM tblmedlemmer WHERE ID <> " & Session("ID") & " AND brugernavn = '" & navn & "'" Set rs = Conn.Execute(SQL) if rs.EOF then
SQL = "UPDATE tblmedlemmer SET brugernavn = '" & navn & "', adgangskode = '" & password & "' WHERE ID = " & Session("brugerID")
Conn.Execute(SQL) indsat = true Conn.Close Set Conn = nothing else indsat = false strError "Brugernavnet findes" end if
if indsat = true then Response.Redirect(Request.ServerVariables("SCRIPT_NAME")) end if end if
SQL = "SELECT * FROM tblmedlemmer WHERE ID = " & Session("brugerID") Set rs = Conn.Execute(SQL) %>
Så kan du andet sted tjekke på hvis strError <> "" så kan du udksrive den eller bare udskrive den:
okay...har du en mail så jeg kan kontakte dig og få dig til at svarer på et spørgsmål...?? Hver gang jeg får fat i dig går det nemlig strygende let i forhold til de andre brugere på eksperten.dk
undskyld jeg blander mig lidt men det så så spændene ud der her så jeg fulte bare med men det jeg ikke kan forstå er hvorfor jeg får denne fejl
Fejltype: Der opstod en Microsoft JScript-kompileringsfejl (0x800A03ED) Tegnet '(' var ventet /login1.asp, line 5, column 3 if Session("login") <> "loged_in" then
Hej choco min login.asp kom til sidst til at se sådan ud hvis det kan hjælpe dig
<% if Request.ServerVariables("REQUEST_METHOD") = "POST" then
Set Conn = Server.CreateObject("ADODB.Connection") Set rs = Server.CreateObject("ADODB.Recordset") Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/db/bowling.mdb")
password = Replace(Request.Form("password"),"'","''") navn = Replace(Request.Form("navn"),"'","''")
SQL = "SELECT * FROM tblmedlemmer WHERE brugernavn = '" & navn & "' AND adgangskode = '" & password & "'" Set rs = Conn.Execute(SQL) if NOT rs.EOF then Session("login") = "loged_in" Session("licensnr") = rs("licensnr") else Session("login") = "" end if rs.Close Set rs = nothing Conn.Close Set Conn = nothing if Session("login") = "loged_in" then 'BRUGER ER LOGGET IND SEND HAM VIDRE TIL EN BESKYTTET FIL
<% if Session("login") <> "loged_in" then Response.Redirect("login.asp") else %> <% Set Conn = Server.CreateObject("ADODB.Connection") Set rs = Server.CreateObject("ADODB.Recordset") Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/db/bowling.mdb") %> <% SQL = "SELECT * FROM qryoversigt WHERE licensnr = " & Session("licensnr") Set rs = Conn.Execute(SQL) %> <% Response.write "Navn : " & rs("navn") %> <br> <% SQL = "SELECT * FROM tblmedlemmer WHERE licensnr = " & Session("licensnr") Set rs = Conn.Execute(SQL) %> <% Response.write "adresse : " & rs("medlem-adresse") %> <p><a href="retdata.asp">Ret min profil</a></p> <% end if %>
retdata.asp
<% if Session("login") <> "loged_in" then Response.Redirect("login.asp") else %>
<% Set Conn = Server.CreateObject("ADODB.Connection") Set rs = Server.CreateObject("ADODB.Recordset") Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/db/bowling.mdb")
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
password = Replace(Request.Form("password"),"'","''") navn = Replace(Request.Form("navn"),"'","''") adresse = Replace(Request.Form("adresse"),"'","''")
SQL = "SELECT brugernavn FROM tblmedlemmer WHERE licensnr <> " & Session("licensnr") & " AND brugernavn = '" & navn & "'" Set rs = Conn.Execute(SQL) if rs.EOF then
Fejltype: Der opstod en Microsoft JScript-kompileringsfejl (0x800A03ED) Tegnet '(' var ventet /login.asp, line 4, column 3 if Session("login") <> "loged_in" then
kan det have noget med at der er noget jeg ikke har ændret så det passer til mig.... nu kan det godt være jeg spørger lidt dumt men er ikke helt sikker på vilken en af dem jeg skal åbne, om det er login.asp
Jo et logud link. Du kan evt lave det sådan at den kalder login siden:
<a href="login.asp?mode=logud">Log ud</a>
Så på siden som hedder login.asp laver du dette kode i toppen af filen:
if Request.Querystring("mode") = "logud" then Session("login") = "" Session.Abandon 'Det er nødvendig at lave redirect eller slettes session ikke helt Response.Redirect("login.asp") end if
ja så går den godt nok ud på login.asp som den skal når man ikke er logget ind ved tryk på f5 Men det er jo ikke særlig smart man skal trykke f5 før det virker, kan man ikke gøre noget så det sker automatisk
Kan du desuden fortælle mig hvordan det virker når en klient sender en request på en asp-fil Jeg skal nemlig til eksamen i IT på tirsdag og skal lige hører om det jeg har skrevet nu også er rigtigt
Så det nok fordi siden ligger i cachen på PCen. Prøv at sætte dette i mellem <head> og </head> på side.asp <meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
Det er fordi den siden side.asp er loaded i cachen og hvis man skriver det så vise den side den har loaded i cachen. Eftersom det den går ud på login siden hvis man trykker F5.
Nej jeg har ikke så meget at tilføje. Det vigtige er vel man kan lave dynamiske sider uafhængigt af hvilket OS en surfer har da det er serveren som genere HTML-kode som output.
så jeg kan altså ikke gøre noget ved det heller hvad???
Men en mac kan da ikke vise asp-filer så vidt jeg har forstået?
Kan man sige at webserveren sender vbscriptet gennem databasen hvorefter vbscriptet fortolkes af asp hvorefter en htmlkode sendes til serveren som så sender htmlfilen videre til klienten
Serveren sender så filen gennem ASP-fortolkeren da det er en .asp fil. Det som kommer ud af ASP-fortolkeren er ren HTML-koden som senden tilbage til klienten. Så i princippet er der for browseren ingen forskel på indholdet af en ASP fil eller HTML fil. Forskellen er den ASP filen har først være gennem serveren ASP fortolker.
Denne: Men en mac kan da ikke vise asp-filer så vidt jeg har forstået?
Det er lige meget hvilekn OS en bruger har når siden ses gennem en browser. Tror du ikke det skal være at man på en MAC ikke har mulighed for at køre en web-server som har indbygget ASP fortolker?
det virkede heller ikke, men kan man ikke skrive et eller andet i disse linier <% if Session("login") <> "loged_in" then Response.Redirect("login.asp") else %> <% Set Conn = Server.CreateObject("ADODB.Connection") Set rs = Server.CreateObject("ADODB.Recordset") Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/db/bowling.mdb") %>
Nej for det bliver jo ikke afvilket når browseren har en kopi af siden. Browseren har jo en HTML udgave og ser jo ikke: <% if Session("login") <> "loged_in" then Response.Redirect("login.asp") else %>
Den ser bare siden ligger i cachen og så viser den det indhold. Browseren skulle request siden igen fra serveren, og det sker først når du trykke F5. Jeg har kommet med de forslag som skulle gøre browseren automatisk spurgte om siden fra serveren.
Prøv i IE at gå ind i Tools->Internet Options... -> Generel -> Settings... Slå "Check for newer version of this page" over på "Every visit to the page"
Men jeg kommer nok til at kontakt dig endnu engang i forbindelse med nogle billeder og et nyhedsscript
Men tak for hjælpen indtil videre
Synes godt om
Ny brugerNybegynder
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.