Solved

Updating the Expiry time on a Cookie

Posted on 2008-06-17
11
634 Views
Last Modified: 2012-06-21
Hi all,

Once a cookie has been created using ASP, is it possible to update it's expiry time?
I would like to keep updating a cookie whilst a user is using the Web Site, but expire after 3 minutes of inactivity.

I am using ASP under WinCE 5.0, so I don't think that 'Session' is available...

Any thoughts would be appreciated.

Best regards,

James
0
Comment
Question by:jatkin
  • 6
  • 5
11 Comments
 
LVL 15

Expert Comment

by:dosth
Comment Utility
Try:
Response.Cookies("cookiename").expires=Dateadd("n" , 3, Now())
0
 
LVL 4

Author Comment

by:jatkin
Comment Utility
Hi,

Thanks for the info. I have tried this and I get the following error...

The collection object specified is read-only
ASP scripting compilation error: '80020009'
Description:
In file: Security.asp
On line: 29

Any thoughts? Am I doing something stupid??? :-O

James
0
 
LVL 15

Expert Comment

by:dosth
Comment Utility
do you have the cookie added in yor code already

use that "cookiename" instead of this
0
 
LVL 4

Author Comment

by:jatkin
Comment Utility
Hi,
I updated the cookie name to match mine.
I have attached the code for the Login.asp (takes the login info) and the Securit.asp (included on all pages to ensure the valid credentials)
SECURITY.ASP*********************************

<%

      intDoHome = 1

      if (intDoHome = 1) then 

%>

<%

' *** Restrict Access To Page: Grant or deny access to this page

MM_authorizedUsers="1,2"

MM_authFailedURL="login.asp"

MM_grantAccess=false
 

If Request.Cookies("MM_Username") <> "" Then

  If (false Or CStr(Request.Cookies("MM_UserAuthorization"))="") Or _

         (InStr(1,MM_authorizedUsers,Request.Cookies("MM_UserAuthorization"))>=1) Then

    MM_grantAccess = true

  End If

End If
 

If MM_grantAccess Then

    Response.Cookies("MM_Username").Expires = DateAdd("s", 120, now())

    Response.Cookies("MM_UserID").Expires = DateAdd("s", 120, now())

End If
 
 

If Not MM_grantAccess Then

  MM_qsChar = "?"

  If (InStr(1,MM_authFailedURL,"?") >= 1) Then MM_qsChar = "&"

  MM_referrer = Request.ServerVariables("URL")

  x_strRequestQueryString = Request.QueryString

  if (Len(x_strRequestQueryString) > 0) Then MM_referrer = MM_referrer & "?" & x_strRequestQueryString

  MM_authFailedURL = MM_authFailedURL & MM_qsChar & "accessdenied=" & Server.URLEncode(MM_referrer)

  Response.Redirect(MM_authFailedURL)

End If

%>

<%

      End if 

%>
 
 
 
 

LOGIN.ASP****************************************
 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

<%Response.Buffer = True%>

<!--#include file="conn.asp" -->

<!--#include file="SQLConst.asp" -->

<!--#include file="SQLFunctions.asp" -->

<!--#include file="GeneralFunctions.asp" -->
 

<%

' *** Validate request to log in to this site.

MM_LoginAction = Request.ServerVariables("URL")
 

x_strRequestQueryString = Request.QueryString

If x_strRequestQueryString<>"" Then MM_LoginAction = MM_LoginAction + "?" + xServer.HTMLEncode(Request.QueryString)

MM_valUsername=CStr(Request.Form("username"))

If MM_valUsername <> "" Then

      MM_fldUserAuthorization="intAccessLevel"

      MM_redirectLoginSuccess="home.asp"

      MM_redirectLoginFailed="failed.asp"

      MM_flag="ADOCE.Recordset.3.1"

      Set cn = CreateObject("ADOCE.Connection.3.1")

      set MM_rsUser = CreateObject(MM_flag)

      cn.Open MM_conn_STRING

      MM_rsUser.Source = "SELECT txtUsername, txtPassword, intUserID"

      If MM_fldUserAuthorization <> "" Then MM_rsUser.Source = MM_rsUser.Source & "," & MM_fldUserAuthorization

      MM_rsUser.Source = MM_rsUser.Source & " FROM tblUsers WHERE txtUsername='" & Replace(MM_valUsername,"'","''") &"' AND txtPassword='" & Replace(Request.Form("password"),"'","''") & "'"

      MM_rsUser.Open MM_rsUser.Source, cn, adOpenStatic, adLockReadOnly
 

      If Not MM_rsUser.EOF Or Not MM_rsUser.BOF Then

            ' username and password match - this is a valid user

            Response.Cookies("MM_Username") = MM_valUsername

            Response.Cookies("MM_UserID") = MM_rsUser("intUserID")

            

            'Response.cookies("MM_Username").expires = Date + 1

            'Response.cookies("MM_UserID").expires = Date + 1
 

            Response.Cookies("MM_Username").Expires = DateAdd("s", 120, now())

            Response.Cookies("MM_UserID").Expires = DateAdd("s", 120, now())
 
 

            If (MM_fldUserAuthorization <> "") Then

                  Response.Cookies("MM_UserAuthorization") = CStr(MM_rsUser.Fields.Item(MM_fldUserAuthorization).Value)

            Else

                  Response.Cookies("MM_UserAuthorization") = ""

            End If
 

            if CStr(Request.QueryString("accessdenied")) <> "" And true Then

                  MM_redirectLoginSuccess = Request.QueryString("accessdenied")

            End If

            MM_rsUser.Close

            Response.Redirect(MM_redirectLoginSuccess)

      End If

      MM_rsUser.Close

      Response.Redirect(MM_redirectLoginFailed)

End If

%>

Open in new window

0
 
LVL 15

Expert Comment

by:dosth
Comment Utility
can you tell mw what is the issue with your current code?
0
6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

 
LVL 4

Author Comment

by:jatkin
Comment Utility
When it gets to the :

If MM_grantAccess Then
    Response.Cookies("MM_Username").Expires = DateAdd("s", 120, now())
    Response.Cookies("MM_UserID").Expires = DateAdd("s", 120, now())
End If

it fails with "ASP scripting compilation error: '80020009'" as above
0
 
LVL 15

Expert Comment

by:dosth
Comment Utility
if you comment the cookies line, it is okay?

i see no issues with the code
0
 
LVL 4

Author Comment

by:jatkin
Comment Utility
It all works fine without that code, however the cookie expires after 3 minutes - even if the user is using the interface.

What I want is to update the expiry every time a user interacts with the interface, therefore it expires after 3 minutes of inactivity.
0
 
LVL 15

Accepted Solution

by:
dosth earned 500 total points
Comment Utility
If MM_grantAccess Then
    Response.Cookies("MM_Username") = Request.Cookies("MM_Username")
    Response.Cookies("MM_UserID")   = Request.Cookies("MM_UserID")
    Response.Cookies("MM_Username").Expires = DateAdd("s", 120, now())
    Response.Cookies("MM_UserID").Expires = DateAdd("s", 120, now())
End If
0
 
LVL 4

Author Closing Comment

by:jatkin
Comment Utility
Excellent! Thanks!!!
0
 
LVL 15

Expert Comment

by:dosth
Comment Utility
thanks
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

I recently decide that I needed a way to make my pages scream on the net.   While searching around how I can accomplish this I stumbled across a great article that stated "minimize the server requests." I got to thinking, hey, I use more than one…
This demonstration started out as a follow up to some recently posted questions on the subject of logging in: http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Q_28634665.html and http://www.experts-exchange.com/Programming/…
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…
This video discusses moving either the default database or any database to a new volume.

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now