webForumDet fria alternativet

Cookie verkar inte skapas?

ASP

23 svar · 612 visningar · startad av Mika3l

Medlem sedan nov. 20018 492 inlägg
Frågan#1

Håller på med ett forum med login.
När man loggar in så kommer det upp en ruta där man kan välja om man vill bli inloggad varje gång man besöker sidan eller bara för tillfället(OK och Cancel-knappar).
När man väljer något av alternativen så ska antingen querystringen makecookie få värdet yes eller no men det verkar inte fungera, man loggas in men sedan så blir man inte inloggad automatiskt... :l

<!-- #Include file="connection.asp" -->
<!-- #Include file="setonline.asp" -->
<html>
<head>
<title>Logga in</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script language="JavaScript">
function fraga()   {
if(confirm("Vill du bli inloggad automatiskt nästa gång du besöker sidan(OK)?")) {
parent.sidan.location.href="login.asp?page=login&makecookie=yes"
} else {
parent.sidan.location.href="index2.asp?login=login&makecookie=no"
}
}
</script>
</head>
<body>

<!-- #Include file="top.asp" -->

<%
If Request.QueryString("page") = "login" Then
SQL = "SELECT anvnamn FROM medlemar WHERE anvnamn = '" & Trim(Request.Form("anvnamn")) & "' AND losen = '" & Trim(Request.Form("losen")) & "'"
Set rs = Connection.Execute(SQL)
If rs.EOF Then
Response.Write"<center><strong>Fel användarnamn eller lösenord!</strong></center>"
Else
SQLL = "UPDATE medlemar SET status = True WHERE anvnamn = '" & Trim(Request.Form("anvnamn")) & "'"
Connection.Execute(SQLL)
Session("user") = Trim(Request.Form("anvnamn"))
If Request.QueryString("makecookie") = "yes" Then
Response.Cookies("sf_login") = Trim(Request.Form("anvnamn"))
End If
Response.Redirect"index2.asp"
End If
End If
%>
<form method="post" action="login.asp?page=login" onSubmit="return fraga()">
<table align="center" cellspacing="0" cellpadding="2">
 <tr>
  <td align="center" colspan="2">
<font class="rubrik">Logga in</font>
  </td>
 </tr>
 <tr>
  <td>
Användarnamn:
  </td>
  <td>
<input type="text" name="anvnamn" maxlength="20">
  </td>
 </tr>
 <tr>
  <td>
Lösenord:
  </td>
  <td>
<input type="password" name="losen" maxlength="20">
  </td>
 </tr>
 <tr>
  <td align="left" valign="middle" colspan="2">
<input type="submit" value="  Logga in  ">
&nbsp;
<a href="glomtlosen.asp">Glömt lösenordet?</a>
  </td>
 </tr>
</table>
</form>

<!-- #Include file="bottom.asp" -->

</body>
</html>

<!-- #Include file="closeconnection.asp" -->

Tacksam för lite respons första sommarlovsnatten. ;) :)

/Mika3l

Medlem sedan mars 20015 287 inlägg
#2

Hur ser den sida ut som i fortsättningen skall logga in dig automatiskt?

Medlem sedan nov. 20018 492 inlägg
#3
<%
If Request.Cookies("sf_login") <> "" Then
Session("user") = Request.Cookies("sf_login")
Dim inloggad
inloggad = "true"
SQLGettyp = "SELECT typ FROM medlemar WHERE anvnamn = '" & Session("user") & "'"
Set rsGettyp = Connection.Execute(SQLGettyp)
Dim typ
typ = rsGettyp("typ")
rsGettyp.Close
Set rsGettyp = Nothing
SQLSetonline = "UPDATE medlemar SET status = True WHERE anvnamn = '" & Session("user") & "'"
Connection.Execute(SQLSetonline)
Else
inloggad = "false"
End If
If Session("user") <> "" Then
inloggad = "true"
End If
%>

Inlkuderas på alla sidor...

Medlem sedan mars 20015 287 inlägg
#4

Om du skriver ut cookiesen, innehåller den sitt värde då?
Jag tror inte att du kan sätta din session för att sen i nästa rad använda den, fast det borde iofs kanske bara påverka vid första försöket...
Du kan ju testa med att skriva:

<%
If Request.Cookies("sf_login") <> "" Then
If NOT Session("user") <> "" then
user = Request.Cookies("sf_login")
Session("user") = user 
Else
user = Session("user")
End If
Dim inloggad
inloggad = "true"
SQLGettyp = "SELECT typ FROM medlemar WHERE anvnamn = '" & user & "'"
Set rsGettyp = Connection.Execute(SQLGettyp)
Dim typ
typ = rsGettyp("typ")
rsGettyp.Close
Set rsGettyp = Nothing
SQLSetonline = "UPDATE medlemar SET status = True WHERE anvnamn = '" & user & "'"
Connection.Execute(SQLSetonline)
Else
inloggad = "false"
End If
If Session("user") <> "" Then
inloggad = "true"
End If
%>
Medlem sedan nov. 20018 492 inlägg
#5

Nej, fungerade inte. :(
Men kan det kanske bero på att jag raderar alla sessions när besökaren lämnar sidan?

Medlem sedan mars 20015 287 inlägg
#6

Finns värdet i din cookie om du skriver ut den?

Medlem sedan mars 20015 287 inlägg
#7

Föresten, du postar ju aldrig formuläret till den sida som sätter din cookie. När du sätter cookien är ju formuläret tomt så inget hamnar i den.

Medlem sedan mars 20015 287 inlägg
#8

Lägg "svaret" på confirmen i ett hiddenfält istället och ta ut värdet därifrån efter att du postat formuläret.

Medlem sedan nov. 20018 492 inlägg
#9

Försökte att skicka med värdena via querystring(dom syns inte iallafall i frames) men det gick inte så bra. :l

<!-- #Include file="connection.asp" -->
<!-- #Include file="setonline.asp" -->
<html>
<head>
<title>Logga in</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script language="JavaScript">
function fraga()   {
var anvnamn = document.loginform.anvnamn.value;
var losen = document.loginform.losen.value;
if(confirm("Vill du bli inloggad automatiskt nästa gång du besöker sidan(OK)?")) {
parent.sidan.location.href="login.asp?page=login&makecookie=yes&anvnamn="" + anvnamn + ""&losen="" + losen + """
} else {
parent.sidan.location.href="login.asp?login=login&makecookie=no&anvnamn="" + anvnamn + ""&losen="" + losen + """
}
}
</script>
</head>
<body>

<!-- #Include file="top.asp" -->

<%
If Request.QueryString("page") = "login" Then
Dim anvnamn, losen
anvnamn = Trim(Request("anvnamn"))
losen = Trim(Request("losen"))
SQL = "SELECT anvnamn FROM medlemar WHERE anvnamn = '" & anvnamn & "' AND losen = '" & losen & "'"
Set rs = Connection.Execute(SQL)
If rs.EOF Then
Response.Write"<center><strong>Fel användarnamn eller lösenord!</strong></center>"
Else
SQLL = "UPDATE medlemar SET status = True WHERE anvnamn = '" & anvnamn & "'"
Connection.Execute(SQLL)
Session("user") = anvnamn
If Request.QueryString("makecookie") = "yes" Then
Response.Cookies("sf_login") = anvnamn
End If
Response.Redirect"index2.asp"
End If
End If
%>
<form name="loginform" method="post" action="login.asp?page=login" onSubmit="return fraga()">
<table align="center" cellspacing="0" cellpadding="2">
 <tr>
  <td align="center" colspan="2">
<font class="rubrik">Logga in</font>
  </td>
 </tr>
 <tr>
  <td>
Användarnamn:
  </td>
  <td>
<input type="text" name="anvnamn" maxlength="20">
  </td>
 </tr>
 <tr>
  <td>
Lösenord:
  </td>
  <td>
<input type="password" name="losen" maxlength="20">
  </td>
 </tr>
 <tr>
  <td align="left" valign="middle" colspan="2">
<input type="submit" value="  Logga in  ">
&nbsp;
<a href="glomtlosen.asp">Glömt lösenordet?</a>
  </td>
 </tr>
</table>
</form>

<!-- #Include file="bottom.asp" -->

</body>
</html>

<!-- #Include file="closeconnection.asp" -->

Kan du förklara mer med hiddenfält?

Medlem sedan mars 20015 287 inlägg
#10

När du blir ivägskickad med hjälp av din confirm postas väl aldrig formuläret? så du kan inte komma åt den informationen.
Så som jag ser det måste du antingen lägga "svaret" från confirmen i ett hiddenfält, posta formuläret och sen hantera infon på nästa sida.

Medlem sedan nov. 20018 492 inlägg
#11

Nja, försöker nog med querystrings men det vill ju inte riktigt fungera(se kod ovan) med javascriptet, fast man blir inloggad.... :l

Medlem sedan mars 20015 287 inlägg
#12

Hur ser länken ut som blir i adressfönstret när du nu postar ditt formulär?

Medlem sedan nov. 20018 492 inlägg
#13

Ser inget i adressfönstret för jag använder ju frames. :p
Men jag blir inloggad så jag blir skickad rätt, men cookien vill ändå inte skapas... :l

Medlem sedan mars 20015 287 inlägg
#14

Om du skriver ut din querystring på sidan du kommer till, hur ser den ut?

Du kan väl iofs köra scriptet utanför framesen för att se adressen alt öppna framesen(?) i ett nytt fönster.

Medlem sedan nov. 20018 492 inlägg
#15

Det skriver inte ut något Men jag får ett javascript fel, med andra ord så skickas inte värdena...
Jag får felmeddelandet att ; förväntas.

<script language="JavaScript">
function fraga()   {
var anvnamn = document.loginform.anvnamn.value;
var losen = document.loginform.losen.value;
if(confirm("Vill du bli inloggad automatiskt nästa gång du besöker sidan(OK)?")) {
parent.sidan.location.href="login.asp?page=login&makecookie=yes&anvnamn="" + anvnamn + ""&losen="" + losen + """
[red]} else {[/red]
parent.sidan.location.href="login.asp?login=login&makecookie=no&anvnamn="" + anvnamn + ""&losen="" + losen + """
}
}
</script>
Medlem sedan juni 200032 967 inlägg
#16

Ja, det är för att det verkar vara fel på tangentkombinationen shift-2 på ditt tangentbord. Det blir liksom dubbelt! ;)

<script language="JavaScript">
function fraga()   {
var anvnamn = document.loginform.anvnamn.value;
var losen = document.loginform.losen.value;
if(confirm("Vill du bli inloggad automatiskt nästa gång du besöker sidan(OK)?")) {
parent.sidan.location.href="login.asp?page=login&makecookie=yes&anvnamn=" + anvnamn + "&losen=" + losen;
} else {
parent.sidan.location.href="login.asp?login=login&makecookie=no&anvnamn=" + anvnamn + "&losen=" + losen;
}
}
</script>

Förresten, ska det inte vara page=login på den andra url:en också?

Medlem sedan mars 20015 287 inlägg
#17

Måste det inte vara en:
return false;
med där någonstans också?

Medlem sedan nov. 20018 492 inlägg
#18

Förresten, ska det inte vara page=login på den andra url:en också?

Jo... :r :p
Testade din kod @ men det ville inte fungera då heller. :l
Inga felmeddelanden eller så men inget vill skickas med, det enda som skickas med är page=login men inget annat, det verkar inte som om man byter sida utan man kommer dit som formuläret pekar vilket som... :l

Medlem sedan juni 200032 967 inlägg
#19

Måste det inte vara en:
return false;
med där någonstans också?

Nja, funktionen behöver egentligen inte returnera någonting, men som onsubmit-eventhandlern är skriven så ser det lite dumt ut. Jag hade tagit bort onsubmit från form-taggen och bytt ut submitknappen mot <input type="button" value=" Logga in " onclick="fraga();">.

Testa! :)

Mvh,

Medlem sedan nov. 20018 492 inlägg
#20

Nu skickas värdena med @. :)
Men om man använder "Button" så går det ju inte att använda enter när man vill logga in, kan man lösa det på något sätt?

509 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
367 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
367 ms — ändringar (db)