hmmmm tar bort denna fråga! Den var dum, va bara en kompis som sa de!
Finns det...
16 svar · 312 visningar · startad av Firegamez.com
Tack......... Jag e nog lite korkad men hur får man användarnamnet att stanna kvar?????? Det man sist loggade in me??? Ska jag bifoga koden där jag vill ha den???
Ja! Bifoga koden. Annars fattar ingen något?!? (åtminstonde inte jag) :)
på inloggningssidan när inloggningen lyckas:
Response.Cookies("Login")("Username") = objRS("Username")
Response.Cookies("Login").Expires = DateAdd("d",365,Now())
och sedan i formuläret
<input type="text" name="username" value="<%= Request.Cookies("Login")("Username") %>">
Här är koden där man loggar in! Borde vara någon stanns där! *OBS* Det är ett glömt lösenord script inbyggt i koden!!!*OBS*
<% Set db = Server.CreateObject("ADODB.Connection")
db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("com/db/members.mdb")&";pwd=********"
SQL = "SELECT Count(*) From members"
Set rs = db.Execute(SQL)
%>
<%=RS.Fields(0) %></td>
</tr>
</table>
<p align="center">
<left>
<table border="0" height="297" cellpadding="2" align="right" width="213"><tr valign="top">
<td bgcolor="#FF8040" width="203" style="border: 1px solid Black" height="268">
<form name="form1" method="post" action="com/login_check.asp" onSubmit="return formCheck()">
<p align="left">
<b>Namn:</b><br><input type="text" name="username" size="21"><br>
<b>Lösenord:</b><br>
<input type="password" name="losen" size="21"><br>
<input type="submit" name="Submit" value="Logga in"> </p>
</form>
<form name="form2" method="post" action="com/lost.asp">
<p align="left">
<b>Glömt lösenordet???</b>
<input type="text" name="username" size="30">
<input type="submit" name="Submit" value="Skicka"><br>
<b>Fylli ditt användarnamn, tryck skicka, kolla mailen.<br>
<br>
</b></p>
</form>
LAMP menar du när man kommer in eller när den kolla in loggningen???(Login_check.asp) asså eller sidan man kommer till?
när du kollar inloggningen och kriterierna uppfylls, dvs att användarnamn och lösen är rätt, skapar du kakan enligt översta koden. Du får anpassa objRS("Username") efter ditt fält i databasen. Sedan skriver du ut kakan som ett förvalt value i formuläret.
Jag har gjort som du sa men det fungerar ändå inte! Har är koden som ser ifall anv. och lösen är rätt! Med koden inne i!
[KOD]
<!-- #include file="adovbs.inc" -->
<% Session.LCID = 1053
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/members.mdb")&";pwd=*******"
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "Select * From members"
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
'----- Rensar bort sånna som inte loggat ut korrekt.. -------
Do Until RecSet.EOF
If RecSet("status") = "online" AND DateDiff("n", RecSet("datum"), Now) \> 60 Then
RecSet("status") = "offline"
RecSet.Update
End If
RecSet.MoveNext
Loop
RecSet.Close
'---------------- SLUT PÅ UTRENSNINGEN ------------------
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
Do Until RecSet.EOF
If RecSet("username") = Request.Form("username") AND RecSet("losen") = Request.Form("losen") Then
RecSet("datum") = Now
RecSet("status") = "online"
RecSet("poang") = RecSet("poang") + 1
RecSet("klocka") = Time
RecSet.Update
Session("namn") = RecSet("fnamn") & " " & RecSet("enamn")
Session("fnamn") = RecSet("fnamn")
Session("enamn") = RecSet("enamn")
Session("username") = RecSet("username")
Session("login") = "ok"
Session("id") = RecSet("id")
Session("status") = "online"
Session("epost") = RecSet("epost")
Session("poang") = RecSet("poang")
Session("pressbild") = RecSet("pressbild")
Session.TimeOut = 60 '\<-- Kontrollera
RecSet.Close
Connect.Close
Set RecSet = nothing
Set Connect = nothing
Response.Redirect "main.asp"
**Response.Cookies("username")("username") = objRS("username")
Response.Cookies("username").Expires = DateAdd("d",365,Now())**
End If
RecSet.MoveNext
Loop
RecSet.Close
Connect.Close
Set RecSet = nothing
Set Connect = nothing
Session("meddelande") = "Fel användarnamn eller lösenord! Var snäll försök igen"
Response.Redirect "../index.asp"
%>
Allt som sker efter en response.redirect ignoreras, alltså körs inte koden där kakan initieras. Sedan heter ditt recordsetobject RecSet och inte objRS.
Ett tips är att kolla inloggningen direkt i SQL-frågan.
sql ="select username, losen from members where username = '" & request.form("username") & "' AND losen = '" & request.form("losen") & "' "
set rs = Connect.execute(sql)
If rs.eof then
'#-- felaktig inloggning
else
'#-- korrekt inloggning
end if
Tack!!!! Det fungerar nu! Tack så hemskt mycke! :D
...inte bara för att höja säkerheten. Jag använder det primärt för att folk ska kunna skriva apostrofer i text som hanteras i databasfrågor, den lilla extra säkerheten kommer som en bonus.
Tänk er att skriva en text på engelska utan att använda apostrofer.
Slutsats: Gör alltid den replacen på alla fältvärden när du ska ställa SQL-frågan. Informationen lagras ändå på rätt sätt (dvs med en apostrof) i databasen, eftersom den apostrof du lägger till fungerar som ett escape-tecken och talar om för tolken att 'följande tecken tillhör strängen, inte avbryter den'.
Mvh,
Re: Hör egentligen inte alls hit men...
Peeer skrev:
byt ut
request.form("username") och request.form("losen")mot
Replace(request.form("username"), "'", "''") och Replace(request.form("losen"), "'", "''")För att höja säkerheten. Läs mer här
Ska man skriva allt det var gång blir man knäpp, därför har man funktioner till sådant ;)
Function singleQuotFix(txt)
txt = replace(txt,"'","''")
singleQuotFix = txt
End Function
Det funkar.....PÅ ett sett.... Men när man skriver fel användarnamn så kommer den senaste medlemen upp istället! Vet ni vad om är fel????? Här är koden
<!-- #include file="adovbs.inc" -->
<% Session.LCID = 1053
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/members.mdb")&";pwd=losen"
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "Select * From members"
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
'----- Rensar bort sånna som inte loggat ut korrekt.. -------
Do Until RecSet.EOF
If RecSet("status") = "online" AND DateDiff("n", RecSet("datum"), Now) > 60 Then
RecSet("status") = "offline"
RecSet.Update
End If
RecSet.MoveNext
Loop
RecSet.Close
'---------------- SLUT PÅ UTRENSNINGEN ------------------
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
Do Until RecSet.EOF
Response.Cookies("username")("username") = RecSet("username")
Response.Cookies("username").Expires = DateAdd("d",365,Now())
If RecSet("username") = Request.Form("username") AND RecSet("losen") = Request.Form("losen") Then
RecSet("datum") = Now
RecSet("status") = "online"
RecSet("poang") = RecSet("poang") + 1
RecSet("klocka") = Time
RecSet.Update
Session("namn") = RecSet("fnamn") & " " & RecSet("enamn")
Session("fnamn") = RecSet("fnamn")
Session("enamn") = RecSet("enamn")
Session("username") = RecSet("username")
Session("login") = "ok"
Session("id") = RecSet("id")
Session("status") = "online"
Session("epost") = RecSet("epost")
Session("poang") = RecSet("poang")
Session("pressbild") = RecSet("pressbild")
Session.TimeOut = 60 '<-- Kontrollera
RecSet.Close
Connect.Close
Set RecSet = nothing
Set Connect = nothing
Response.Redirect "main.asp"
End If
RecSet.MoveNext
Loop
RecSet.Close
Connect.Close
Set RecSet = nothing
Set Connect = nothing
Session("meddelande") = "Fel användarnamn eller lösenord! Var snäll försök igen"
Response.Redirect "../index.asp"
%>
Har också provat att lägga till det Peer sa.... me det funkade inte!
Det har med att göra att det användarnamnet som passerade login_cgheck.asp utan problem lagras i en cookies och kommer du då med ett felaktigt användarnamn som inte tar sig vidare genom login_check.asp utan skickas tillbaka till startsidan, så stannar det gammla värdet kvar i cookien
*hoppas du fattar min krångliga förklaring* ;)
flytta in:
Response.Cookies("username")("username") = RecSet("username")
Response.Cookies("username").Expires = DateAdd("d",365,Now())
innanför din if-sats:
If RecSet("username") = Request.Form("username") AND RecSet("losen") = Request.Form("losen") Then


