webForumDet fria alternativet

Inloggnings probelm...

ASP

14 svar · 358 visningar · startad av ReloadMaster

Medlem sedan aug. 2001239 inlägg
Frågan#1

Hur ska jag ändra denna kod:
<%'Logga in%>

\<form method="POST" action="login2.asp?status=check"\>

	\<table width="250" border="0" cellspacing="0" cellpadding="0" align="center"\>
	\<tr\> 
		\<td width="120"\>\<b\>Användarnamn:\</b\>\</td\>
		\<td width="280"\>\<input type="text" name="anvandarnamn"\>\</td\>
	\</tr\>
	\<tr\> 
		\<td width="120"\>\<b\>Lösenord:\</b\>\</td\>
		\<td width="280"\>\<input type="password" name="losenord"\>\</td\>
	\</tr\>
	\<tr\> 
		\<td width="120"\>&nbsp;\</td\>
		\<td width="280"\>&nbsp;\</td\>
	\</tr\>
	\<tr\> 
		\<td width="120"\>&nbsp;\</td\>
		\<td width="280"\>\<input type="submit" name="Submit" value=" Logga in "\>\</td\>
	\</tr\>
	\</table\>

\</form\>

<%'Kollar inloggning...%>

<%

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("nyhetdb.mdb")
Set RecSet = Connect.Execute(SQL)

anamn = RecSet("anvandarnamn")
losen = RecSet("losenord")

If Request.Querystring("status") = "check" Then

Session("anvandare") = Request.Form("anvandarnamn")
Session("losenord") = Request.Form("losenord")

	If Session("anvandare") = "ss" AND Session("losenord") = "ss" Then

%>

Du är inloggad klicka för att gå in...
<a href="sidan.asp">Till sidan</a>
<%

	Else
	
	Response.Write "\<center\>\<font color=""Red""\>Du har angett ett felaktigt användarnamn eller lösenord.\</font\>\</center\>"

	End If

End If

%>

så att den kontaktar databasen och hämtar lösenorden därifrån...

------------------
.................

Medlem sedan dec. 20003 563 inlägg
#2

Det här är en av den vanligaste frågan och jag säger som jag kanske ganska ofta säger: Sök! ;)
Du hittar svar det lovar jag.

------------------
MVH // Cyprys
Cyprys
Synd att du inte kan köpa en voodoojordglob och sedan snurra på den fort som fan och skrämma skiten ur alla.

Medlem sedan aug. 2001239 inlägg
#3

Vad ska jag söka på då...

hittar inget på "datbas inloggning" m.m....

------------------
.................

Medlem sedan dec. 20003 563 inlägg
#4

Vet inte varför men jag känner mig bara snäll idag.
Kanske för att jag klarat uppkörningen på första försöket idag :e :e :e

#########login1.asp
<form method=post action=login2.asp?status=check>
<table width="250" border="0" cellspacing="0" cellpadding="0" align="center">
<tr> 
<td width="120"><b>Användarnamn:</b></td>
<td width="280"><input type="text" name="anvandarnamn"></td>
</tr>
<tr> 
<td width="120"><b>Lösenord:</b></td>
<td width="280"><input type="password" name="losenord"></td>
</tr>
<tr> 
<td width="120"> </td>
<td width="280"> </td>
</tr>
<tr> 
<td width="120"> </td>
<td width="280"><input type="submit" name="Submit" value=" Logga in "></td>
</tr>
</table>
</form>

######### login2.asp
<%
' LÄNGST UPP PÅ SIDAN START
if request.querystring("status") <> "check" then
response.redirect("login1.asp")
end if
' LÄNGST UPP PÅ SIDAN SLUT

if request.querystring("status") = "check" then
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("nyhetdb.mdb")
SQL = "SELECT anvandarnamn, losenord FROM tabellen " & _
"WHERE anvandarnamn = '"&request.form("anvandarnamn")&"' AND " & _
"losenord = '"&request.form("losenord")&"' "
Set RS = Connect.Execute(SQL)

if RS.eof then
	response.write "Du har skrivit fel användarnamn eller lösenord!"
else
	session("inloggad") = true
	response.write "Nu kan du gå till <a href=sidan.asp>sidan</a>"
end if
end if
Connect.close
Set Connect = nothing
Set RS = nothing
%>

På alla sidor som du ska lösenordskydda lägger du sedan till den här kodrader längs upp!

<%
if session("inloggad") <> true then
response.redirect("login1.asp")
end if
%>

------------------
MVH // Cyprys
Cyprys
Synd att du inte kan köpa en voodoojordglob och sedan snurra på den fort som fan och skrämma skiten ur alla.

Medlem sedan juni 2001206 inlägg
#5

Kom att tänka på en sak...

Får en användare helt unika sessions för varje sida denne går in på?

Tänk t.ex. om en användare går in på annan sida utanför denna webplats och där får Session("inloggad") = true och utan att logga ut där går besökaren till denna sidan, hänger då den sessionen med? Isåfall kan ju denne gå in på sidan utan att logga in.

------------------
MVH
Harback

[Redigerat av Harback den 15 aug 2001]

Medlem sedan juni 200032 967 inlägg
#6

sessionen är beroende på webapplikation.

session måste alltså sättas på din webbplats för att den ska gälla på din webbplats.

när en session sätts på servern, skapas en cookie hos användaren som innehåller ett långt sessionid. detta id kopplas mot sessionen på servern, och sessioner med id som inte skapas hos dig har inte något värde på din webbplats.

mvh,

------------------
can i borrow your goat?

Medlem sedan juni 2001329 inlägg
#7

Hjälp?

Har försökt använda mig av denna kod för att få fram en inloggning, men jag får det alltså inte till att fungera. :(

<%
' LÄNGST UPP PÅ SIDAN START
if request.querystring("status") <> "check" then
response.redirect("admin.asp")
end if
' LÄNGST UPP PÅ SIDAN SLUT
%>

<%
Function Fix(str)
str = Replace(str,"'","''")
str = Server.HTMLEncode(str)
Fix = str
End Function
%>

<%
aID = Fix(Request.form("log"))
losenord = Fix(Request.form("pass"))
%>

<%
if request.querystring("status") = "check" then
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("db/nyheter_databasen.mdb")
SQL = "SELECT log, pass FROM admin WHERE log = " & aID & " AND pass = '" & losenord & "' "
response.write sql
Set RS = Connect.Execute(SQL)
%>

<%
if RS.eof then
	response.write "Du har skrivit fel användarnamn eller lösenord!"
else
	session("inloggad") = true
    response.write "Nu kan du gå till <a href=sidan.asp>sidan</a>"
%>

<% end if %>
<% end if %>

<%
Connect.close
Set Connect = nothing
Set RS = nothing
%>

Får felmeddelandet,

Microsoft JET Database Engine error '80040e10'
No value given for one or more required parameters.
/test/admin2.asp, line 39

Detta felet ska ju tydligen ha något med namnet i databasen att göra (då jag sökte efter felet på forumet), men databasen har dessa namn:

id - räknare
log - text
pass - tal

När jag sen skriver ut sql satsen, så får jag med mig det jag vill veta alltså,

SELECT log, pass FROM admin WHERE log = admin AND pass = '666666'

Men varför fungerar det då inte?? :( Tacksam för all hjälp! :P

Medlem sedan aug. 20013 824 inlägg
#8
SQL = "SELECT log, pass FROM admin WHERE log = '" & aID & "' AND pass = '" & losenord & "';"

cyprys: Grattis! :birp

Medlem sedan juni 2001329 inlägg
#9

Nix, tyvärr inte rätt, fick annat fel nu:

Microsoft JET Database Engine error '80040e07' 
Data type mismatch in criteria expression. 
/test/admin2.asp, line 39

Och sen är inläggen (de övriga) rätt gamla, skrevs, 2001-08-15, men bättre sent än aldrig kanske? ;)

Medlem sedan jan. 20032 285 inlägg
#10

Så här då?

SELECT log, pass FROM admin WHERE log = '" & admin & "' AND pass = '666666'
Medlem sedan juni 2001329 inlägg
#11

Hur då? Tanken är ju att den ska utgå ifrån databasen, för att jag ska kunna skapa mer än en användare och kunna t ex. ändra lösenordet via webben? Med din kodsnutt så ska den ju enbart acceptera just de loginet och lösenordet? Kanske jag som missförstått dig, men förklara gärna då, är nämligen långt från haj på asp =/ Men nångång ska ju va den första att lära sig ;)

Medlem sedan juni 2001329 inlägg
#12

Såg att du förresten hade en admin på din sida, hur har du gjort den? Kanske kan du dela med dig av en liten kodsnutt? :P

Medlem sedan jan. 20032 285 inlägg
#13

Äsch, nu känner jag mig generös. :)

<%
If Request.QueryString = "" Then
  Response.Redirect("?do=login")
End If

If Request.QueryString("do") = "login" Then
%>
<html>
  <head></head>
  <body>
    <form action="?do=inside" method="post">
      <input type="text" name="user" value="Användarnamn"><br>
      <input type="password" name="pass" value="Lösenord"><br>
      <input type="submit" value="Logga in">
    </form>
  </body>
</html>
<%
ElseIf Request.QueryString("do") = "inside" Then
  Dim strUser, strPass, strSQL, objConn, objRS

  strUser = Replace(Request.Form("user"), "'", "''")
  strPass = Replace(Request.Form("pass"), "'", "''")

  Set objConn = Server.CreateObject("ADODB.Connection")
  objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/nyheter_databasen.mdb")
  strSQL = "SELECT log, pass FROM admin WHERE log = '" & strUser & "' AND pass = '" & strPass & "'"
  Set objRS = objConn.Execute(strSQL)

  If objRS.EOF Then
    Response.Write("Fel användarnamn eller lösenord.")
  Else
    Session("inne") = True
    Response.Redirect("inne.asp")
  End If

  Set objRS = Nothing
  objConn.Close : Set objConn = Nothing
End If
%>
Medlem sedan juni 2001329 inlägg
#14

Tackar för kodsnutten men får exakt samma fel återigen! ' - tecknet betyder väl tal? Hm, får prova göra om hela databasen (enbart en användare än så länge), ska väl förhoppningsvis få ordning på det nångång *hoppas*

Tack iaf :)

red:
Har nu provat göra om databasen, har helt tagit bort det gamla (tänkte att admin kanske var reserverat, som vissa fält är), bytt namn till anv, och bytt bägge fälten till tal med siffror som innehåll. Men jag får ändå felet,

Microsoft JET Database Engine error '80040e07' 
Data type mismatch in criteria expression. 
/test/test2.asp, line 37

Och om jag räknat rätt så är rad 37,

Session("inne") = True
Response.Redirect("default.asp")
[b]End If[/b]

??

Medlem sedan juni 2001329 inlägg
#15

YES! Fick äntligen ordning på det, hade blandat ihop ' med " var ju precis tvärtom ;) Tack iaf alla för hjälpen! :)

271 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
144 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)