Just nu i M3-nätverket
Jump to content

Logga in för att få posta i forumet


Nina_Visby

Recommended Posts

Hej

jag sliter snart av mig håret! ;-)

Har i en vecka nu försökt få ihop ett litet forum till min sajt.

Jag har allt klart, förutom att jag vill att de som skriver inlägg skall logga

in för att få göra det, precis som den här rutan jag just nu skriver i.

Jag kan inte riktigt få till det där med session, eller coockie eller hur det nu funkar.

Jag har en databas (access) där man kan registrera sig (funkar) och där man kan logga in sig. Men jag kan ju ändå skriva inlägg även om jag INTE loggar in mig.

Är det när man klickar på "nyttinlagg.asp" som den skall känna av att personen inte är inloggad? Och hur får man till detta?

Det är verkligen frustrerande det här när det står helt still i huvudet.

 

På förstasidan har jag forumtrådar och länkarna "logga in" "skapa användarkonto" och "skapa ny tråd"

Det kanske är fel att ha alla på förstasidan...

 

Någon snäll person därute kan gärna få hjälpa mig :-)

 

/mvh Nina

Det kanske finns någon steg - för - steg beskrivning? Jag har letat och hittat massor men jag fixar det inte i alla fall...

 

Troligen VÄLDIGT enkelt och simpelt och ni skrattar säkert men men..

 

[inlägget ändrat 2007-02-08 21:04:14 av Nina_Visby]

Link to comment
Share on other sites

Ett sätt är att när du loggar in så sätter du en Session-variabel till t ex true, om nu inloggningen gick bra.

Sen kollar du på dem sidorna som man behöver vara inloggad på för att kunna se/använda om Session-variabel är true.

Är den det så fortsätt ladda sidan annars skicka tillbaka dem.

Denna koll ska du ha överts på sidan.

 

Visa gärna lite kod för inloggningen samt en sida som kräver att man är inloggad så kan du få lite "fingervisning".

 

Troligen VÄLDIGT enkelt och simpelt och ni skrattar säkert men men..
Allt är enkelt bara man vet hur man gör :)

 

[inlägget ändrat 2007-02-08 21:18:22 av Micke_skane]

Link to comment
Share on other sites

[log]

 

<!-- #INCLUDE FILE = [GRÅ]"header.asp"[/GRÅ] -->

[MÄRK]<%[/MÄRK]
[color="#006400"]'Green colorset[/color]
[color="#006400"]'BackgroundColor=[GRÅ]"#C9DDB3"[/GRÅ][/color]
[color="#006400"]'BorderColor=[GRÅ]"#006600"[/GRÅ][/color]

[color="#006400"]'Blue colorset[/color]
BackgroundColor=[GRÅ]"#AFD1F8"[/GRÅ]
BorderColor=[GRÅ]"#000080"[/GRÅ]

[color="#006400"]'Purple colorset[/color]
[color="#006400"]'BackgroundColor=[GRÅ]"#FDC8F2"[/GRÅ][/color]
[color="#006400"]'BorderColor=[GRÅ]"#800080"[/GRÅ][/color]

Content = [GRÅ]""[/GRÅ]							[color="#006400"]'Clear the Content string[/color]
QStr = [b]Request[/b].QueryString([GRÅ]"login"[/GRÅ])		[color="#006400"]'Save the login querystring to QStr[/color]

[color="#0000ff"]If[/color] [color="#0000ff"]Ucase[/color]([color="#0000ff"]Left[/color](QStr,6))=[GRÅ]"CREATE"[/GRÅ] [color="#0000ff"]Then[/color] 
	Title = [GRÅ]"Register"[/GRÅ]
[color="#0000ff"]Else[/color]
	Title = [GRÅ]"Login"[/GRÅ]
[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]

[color="#006400"]'The code below saves the contents the table must have in the variable Content[/color]
[color="#006400"]'The content depends on what's in the QueryString[/color]

[color="#0000ff"]If[/color] QStr=[GRÅ]"passfailed"[/GRÅ] [color="#0000ff"]Then[/color]				
	Content = Content & [GRÅ]"<tr><td valign=top bordercolor="[/GRÅ]& BackgroundColor &[GRÅ]" align=center><P>Wrong password</P><A href=Javascript:history.go(-1)>Back</A></td></tr>"[/GRÅ]
[color="#0000ff"]ElseIf[/color] QStr=[GRÅ]"createpassfailed"[/GRÅ] [color="#0000ff"]Then[/color]		
	Content = Content & [GRÅ]"<tr><td valign=top bordercolor="[/GRÅ]& BackgroundColor &[GRÅ]" align=center><P>Wrong password</P><A href=Javascript:history.go(-1)>Back</A><BR><BR><A HREF=loginforum.asp>Cancel registration</A></td></tr>"[/GRÅ]
[color="#0000ff"]ElseIf[/color] QStr=[GRÅ]"namefailed"[/GRÅ] [color="#0000ff"]Then[/color]
	Content = Content & [GRÅ]"<tr><td valign=top bordercolor="[/GRÅ]& BackgroundColor &[GRÅ]" align=center><P>Invalid username</P><A HREF=loginforum.asp?login=createnew>Click here to create an acount</A><BR><BR><A HREF=Javascript:history.go(-1)>Back</A></td></tr>"[/GRÅ]
[color="#0000ff"]ElseIf[/color] QStr=[GRÅ]"createnamefailed"[/GRÅ] [color="#0000ff"]Then[/color]
	Content = Content & [GRÅ]"<tr><td valign=top bordercolor="[/GRÅ]& BackgroundColor &[GRÅ]" align=center><P>Invalid username</P><A HREF=Javascript:history.go(-1)>Back</A><BR><BR><A HREF=loginforum.asp>Cancel registration</A></td></tr>"[/GRÅ]
[color="#0000ff"]ElseIf[/color] QStr=[GRÅ]"creatednew"[/GRÅ] [color="#0000ff"]Then[/color]
	Content = Content & [GRÅ]"<tr><td valign=top bordercolor="[/GRÅ]& BackgroundColor &[GRÅ]" align=center><P>Your account has been created</P><A HREF=loginforum.asp>Login</A></td></tr>"[/GRÅ]
[color="#0000ff"]ElseIf[/color] QStr=[GRÅ]"createnew"[/GRÅ] [color="#0000ff"]Then[/color]
	Content = Content & [GRÅ]"<form name=frmCreate method=POST action=create.asp>"[/GRÅ]
	Content = Content & [GRÅ]"<tr><td valign=top bordercolor="[/GRÅ]& BackgroundColor &[GRÅ]" align=center><br>Username: <input type=text name=txtUsername></td></tr>"[/GRÅ]
	Content = Content & [GRÅ]"<tr><td valign=top bordercolor="[/GRÅ]& BackgroundColor &[GRÅ]" align=center>Password: <input type=password name=txtPassword></td></tr>"[/GRÅ]
	Content = Content & [GRÅ]"<tr><td valign=top bordercolor="[/GRÅ]& BackgroundColor &[GRÅ]" align=center><br>Full name: <input type=text name=txtFullname></td></tr>"[/GRÅ]
	Content = Content & [GRÅ]"<tr><td valign=top bordercolor="[/GRÅ]& BackgroundColor &[GRÅ]" align=center><input type=submit name=cmdSubmit value=Register></td></tr>"[/GRÅ]
	Content = Content & [GRÅ]"</form>"[/GRÅ]
[color="#0000ff"]Else[/color]
	Content = Content & [GRÅ]"<form name=frmMain method=POST action=verify.asp>"[/GRÅ]
	Content = Content & [GRÅ]"<tr><td valign=top bordercolor="[/GRÅ]& BackgroundColor &[GRÅ]" align=center><br>Username: <input type=text name=txtUsername></td></tr>"[/GRÅ]
	Content = Content & [GRÅ]"<tr><td valign=top bordercolor="[/GRÅ]& BackgroundColor &[GRÅ]" align=center>Password: <input type=password name=txtPassword></td></tr>"[/GRÅ]
	Content = Content & [GRÅ]"<tr><td valign=top bordercolor="[/GRÅ]& BackgroundColor &[GRÅ]" align=center><input type=submit name=cmdSubmit value=Login></td></tr>"[/GRÅ]
	Content = Content & [GRÅ]"</form>"[/GRÅ]
	Content = Content & [GRÅ]"<tr><td valign=top bordercolor="[/GRÅ]& BackgroundColor &[GRÅ]" align=center><A HREF=loginforum.asp?login=createnew>Click here to create an acount</A></td></tr>"[/GRÅ]
[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]

[MÄRK]%>[/MÄRK]

<!-- Build the page [color="#0000ff"]With[/color] the table -->


<body link=[GRÅ]"<% Response.Write(BorderColor) %>"[/GRÅ] vlink=[GRÅ]"<% Response.Write(BorderColor) %>"[/GRÅ] alink=[GRÅ]"<% Response.Write(BorderColor) %>"[/GRÅ] text=[GRÅ]"<% Response.Write(BorderColor) %>"[/GRÅ]>
<br>
<div align=[GRÅ]"center"[/GRÅ]>

<table border=[GRÅ]"2"[/GRÅ] cellspacing=[GRÅ]"5"[/GRÅ] bgcolor=[GRÅ]"<% Response.Write(BackgroundColor) %>"[/GRÅ] bordercolor=[GRÅ]"<% Response.Write(BorderColor) %>"[/GRÅ]width=[GRÅ]"250px"[/GRÅ]>


[MÄRK]<%[/MÄRK]
[b]Response[/b].Write([GRÅ]"<tr><td valign=top align=center><b>"[/GRÅ] & Title & [GRÅ]"</b></td></tr>"[/GRÅ])
[b]Response[/b].Write(Content)	 [color="#006400"]' Paste the contents in the table[/color]
[MÄRK]%>[/MÄRK]

</table>

</div>

<!-- #INCLUDE FILE = [GRÅ]"footer.asp"[/GRÅ] -->

 

[/log]

 

Det här var en som jag hittade på nätet som jag använder mig av

Kanske att det går att göra på ett enklare sätt, men detta är i alla fall

"loginforum.asp"

Kan tillägga att det är både loggin och skapa konto...

[inlägget ändrat 2007-02-08 21:22:29 av Nina_Visby]

 

LOG-taggar inlagt av moderator.

 

[inlägget ändrat 2007-02-11 18:01:25 av Maratonmannen]

Link to comment
Share on other sites

...och verify.asp ser ut så här

<!-- #INCLUDE FILE = "header.asp" -->

<%
'Save the entered username and password
Username = Request.Form("txtUsername")	
Password = Request.Form("txtPassword")

'Build connection with database
set conn = server.CreateObject ("ADODB.Connection")		
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath ("db/sys/users.mdb")
set rs = server.CreateObject ("ADODB.Recordset")		
'Open record with entered username
rs.Open "SELECT * FROM userlist where username='"& Username &"'", conn, 1 

'If there is no record with the entered username, close connection
'and go back to login with QueryString
If rs.recordcount = 0 then
	rs.close
	conn.close
	set rs=nothing
	set conn=nothing
	Response.Redirect("loginforum.asp?login=namefailed")
end if

'If entered password is right, close connection and open mainpage
if rs("password") = Password then
	Session("name") = rs("fullname")
	rs.Close
	conn.Close
	set rs=nothing
	set conn=nothing
	Response.Redirect("default.asp")
'If entered password is wrong, close connection 
'and return to login with QueryString
else
	rs.Close
	conn.Close
	set rs=nothing
	set conn=nothing
	Response.Redirect("loginforum.asp?login=passfailed")
end if	

%>
<!-- #INCLUDE FILE = "footer.asp" -->

 

Link to comment
Share on other sites

Det var en "rörig" kod.

 

Lite snabbt kan jag visa ett exempel på hur jag menar:

Efter: Session("name") = rs("fullname")

skriver du: Session("logincheck") = True

 

Sen kollar du överst på sidorna där det krävs inloggning med:

[color="#0000ff"]If[/color] [b]Session[/b]([GRÅ]"logincheck"[/GRÅ]) = [color="#0000ff"]False[/color] [color="#0000ff"]Then[/color]
[color="#006400"]'Skicka dem tillbaka[/color]
[color="#0000ff"]Else[/color]
[color="#006400"]' Allt är rätt, fortsätt ladda sidan[/color]
[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]

Sen när man loggar ut så sätter man Session("logincheck") = False .

Helst hade jag gjort om hela koden men det orkar jag inte just nu men imorgon kan du nog få ett bättre förslag.

 

[inlägget ändrat 2007-02-08 21:55:08 av Micke_skane]

Link to comment
Share on other sites

Jo tack!

Jag kan gärna vänta till imorgon om du orkar hjälpa mig då :-)

 

Tycker själv att koden är rörig men det var den enda som jag har hittat

efter flera dagars letande som i alla fall funkade.

 

Kanske du kan "rädda helgen" åt mig :-)

 

/mvh Nina

 

Kom på en fråga till så här på nattkröken - skall man ha de som skapar användarkonton i samma databas som där inläggen görs?

 

/Nina

 

 

 

[inlägget ändrat 2007-02-08 23:52:58 av Nina_Visby]

Link to comment
Share on other sites

Jag skulle då rekommendera att använda samma databas då du slipper öppna flera databaser på en och samma sida.

 

 

Link to comment
Share on other sites

Gjorde lite justeringar i din login-kod så att det blir en säkrare kod.

I mitt exempel skickas samma parameter tillbaka till login-sidan då fel uppstår. Det är ju en smaksak men jag tänker som så att ingen ska kunna "testa" att logga in och få reda på om användarnamnet eller lösenordet är rätt. Blir det fel så är det fel i hela "login-grejen".

 

Ex:

[log]

[MÄRK]<%[/MÄRK]
[color="#0000ff"]Option Explicit[/color]
[color="#0000ff"]Dim[/color] anvnamn, losenord, strSQL, sida, Cmd, rs
[color="#006400"]'Save the entered username and password[/color]
anvnamn = [color="#0000ff"]Trim[/color]([color="#0000ff"]Replace[/color]([b]Request[/b].Form([GRÅ]"txtUsername"[/GRÅ]),[GRÅ]"'"[/GRÅ],[GRÅ]"''"[/GRÅ]))
losenord = [color="#0000ff"]Trim[/color]([color="#0000ff"]Replace[/color]([b]Request[/b].Form([GRÅ]"txtPassword"[/GRÅ]),[GRÅ]"'"[/GRÅ],[GRÅ]"''"[/GRÅ]))

[color="#006400"]' Kolla om där finns något ifyllt, annars är där ju ingen mening med att öppna databasen[/color]
[color="#0000ff"]If[/color] anvnamn = [GRÅ]""[/GRÅ] Or losenord = [GRÅ]""[/GRÅ] [color="#0000ff"]Then[/color]
  sida = [GRÅ]"loginforum.asp?login=namefailed"[/GRÅ]
[color="#0000ff"]Else[/color]

[color="#006400"]'Build connection with database[/color]
[color="#0000ff"]Set[/color] conn = [b]Server[/b].[color="#0000ff"]CreateObject[/color] ([GRÅ]"ADODB.Connection"[/GRÅ]) 
conn.Open [GRÅ]"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="[/GRÅ] & [b]Server[/b].MapPath ([GRÅ]"db/sys/users.mdb"[/GRÅ])

[color="#006400"]' Använd Command-object för att öka skyddet mot sql-injections[/color]
[color="#0000ff"]Set[/color] Cmd = [b]Server[/b].[color="#0000ff"]CreateObject[/color]([GRÅ]"ADODB.command"[/GRÅ])
  Cmd.ActiveConnection = Conn
  strSQL = [GRÅ]"SELECT username, [password], fullname FROM userlist WHERE (username=? AND [password]=?)"[/GRÅ]
  Cmd.CommandText = strSQL
  [color="#0000ff"]Set[/color] rs = Cmd.[color="#0000ff"]Execute[/color] (,[color="#0000ff"]Array[/color](anvnamn, losenord))

[color="#006400"]'If there is no record with the entered username, close connection[/color]
[color="#006400"]'and go back to login with QueryString[/color]
[color="#0000ff"]If[/color] rs.EOF [color="#0000ff"]Then[/color]
    sida = [GRÅ]"loginforum.asp?login=namefailed"[/GRÅ]
[color="#0000ff"]ElseIf[/color] rs([GRÅ]"username"[/GRÅ]) <> anvnamn Or rs([GRÅ]"password"[/GRÅ]) <> losenord [color="#0000ff"]Then[/color]
    sida = [GRÅ]"loginforum.asp?login=namefailed"[/GRÅ]
[color="#0000ff"]Else[/color]
  [b]Session[/b]([GRÅ]"name"[/GRÅ]) = rs([GRÅ]"fullname"[/GRÅ])
  [b]Session[/b]([GRÅ]"LoginCheckOk"[/GRÅ]) = [color="#0000ff"]True[/color]
  sida = [GRÅ]"default.asp"[/GRÅ]
[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]

rs.Close : [color="#0000ff"]Set[/color] rs = [color="#0000ff"]Nothing[/color]
conn.Close : [color="#0000ff"]Set[/color] conn = [color="#0000ff"]Nothing[/color]
[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]
[b]Response[/b].Redirect(sida)
[MÄRK]%>[/MÄRK]

[/log]Här sätts Session("LoginCheckOk") = True om det går bra.Sen skulle jag varmt rekommendera dig att ändra kolumnnamnen i databasen. Password är ett reserverat ord i Access.

Ändra till t ex losenord och anvnamn.

Att där finns både kontroll på om rs.EOF och om rs("username") <> anvnamn är för att sql-satsen bryr sig inte om ifall det är stora eller små tecken i värdena.

 

Man kan även lägga databas-kontakten i en separat fil och anropa den när man behöver den.

Vidare kan man bygga ut det till andra sätt för att skapa parametrar som man sen använder i sql-frågan men det blir nog "to much" för dig just nu.

 

Sen kollar du som jag nämnde tidigare på alla sidor där man behöver vara inloggad om Session("LoginCheckOk") = False .

Det gör du först innan någon annan Asp-kod.

 

Ska se om jag hinner/orkar koda om din andra sida.

Lägg allt i samma databas men i olika tabeller.

 

Lycka till!

Micke

 

[inlägget ändrat 2007-02-09 09:15:02 av Micke_skane]

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...