Hyperlinking and ASP.NEt Session

N

Nedu N

Hi,

I am trying to design a Home page for my applicatiion in which i want show
the links for for some itms...
I tried to put the following
<td>
<font face="Arial, Helvetica, sans-serif" color="#ffffff" size="2"> Contact
| My Profile | Logout /font>
</td>

Here i want to have link for the above options to respective pages, i tried
with anchor <A></A> with HREF attribute, but i don't want to see the
underline for the link., i am not sure of how to do that...would anyone help
me in this regard.

ASP.NET Session variables Questions?

1) How to discard session variables? Are all session variables cleared when
the code FormsAuthentication.SignOut() is executed for Forms authentication
web
applications (i am sessing this not happening, even after using
Session.Abandon(), Session.Clear())

2) Is session variables persistent across hyperliks (i think it is not,
since each hyperlink will assume diferent session)

3) How to check for user Session expiration to pop up a messgae saying
"Session Expired, goto Login page"

Thanks
Nedu
 
M

Munsifali Rashid

See inline comments.
I am trying to design a Home page for my applicatiion in which i want show
the links for for some itms...
I tried to put the following
<td>
<font face="Arial, Helvetica, sans-serif" color="#ffffff" size="2"> Contact
| My Profile | Logout /font>
</td>

Here i want to have link for the above options to respective pages, i tried
with anchor <A></A> with HREF attribute, but i don't want to see the
underline for the link., i am not sure of how to do that...would anyone help
me in this regard.

Use stylesheets for your links.

<style>
a.navlink
{
font-family: arial, helvetica, sans-serif;
font-size: 11px;
color: #ffffff;
text-decoration: none;
}
</style>

ASP.NET Session variables Questions?

1) How to discard session variables? Are all session variables cleared when
the code FormsAuthentication.SignOut() is executed for Forms authentication
web applications (i am sessing this not happening, even after using
Session.Abandon(), Session.Clear())

FormsAuthentication.SignOut() will clear the session variables set by the
ASP.NET authentication system. However, if you hit back on your browser,
the page will be pulled from your browser cache, and will display. Hitting
refresh on this page will cause it to re-request the page from the server,
at which point it will realise you are no longer logged in, and will
redirect to the login page, as defined in web.config.

2) Is session variables persistent across hyperliks (i think it is not,
since each hyperlink will assume diferent session)

Session variables are persistent across a users session, across hyperlinks
within the same domain and IIS application.

3) How to check for user Session expiration to pop up a messgae saying
"Session Expired, goto Login page"

You will need to do this using Javascript and timers. Create a timer on
each page load, in which you pass in the session timeout. When the timer
elapses, use the alert command to display a warning message.


Regards,

Mun
 
N

Nedu N

Thanks Mun.
I was trying to use Timer object for Session Timeout popup and redirect
already, but it was not not working...
would you give me exaple of how to code time controls to popup a message and
redirect to login page when the session times out..
(using Session.Timeout property to determine the session timout).

Thanks
Nedu
 
M

Munsifali Rashid

What you need to do, is start a javascript timer on each page load, and then
update the timer every second until the session expires. If the user
navigates to a different page, the clock will reset as they are actively
using the session.

Create a timers javascript file and put the following two functions in it.
This script must be referenced in every page on which you want to show the
popup. I.e. save it as "includes/timers.js" and then each page must
reference it using <script language="JavaScript"
src="includes/timers.js"></script>.


function startClock()
{
dWatch = 0;
dStarted = new Date();
}
function updateClock(iTimeOutAlert)
{
setTimeout("updateClock('" + iTimeOutAlert + "');", 100);
dNow = new Date();
dWatch = dNow.getTime() - dStarted.getTime();
dClock = Math.round(dWatch/1000);
if (dClock == iTimeOutAlert)
{
alert("Warning!\n\nYour session has expired.\nRedirecting to login
page...");
window.location.href = "loginpage.aspx";
}
}


Once this is done, you need to modify pages using the alert to call
startClock() and updateClock(). You can do this using the following (in the
Page_Load function):


[C#]
int intTimeOut = Session.Timeout*100;
string strTimerScript = "startClock();updateClock(" + intTimeOut.ToString()
+ ");"
Page.RegisterStartupScript("timerScript", strTimerScript);


[VB.NET]
Dim intTimeOut as Integer = Session.Timeout*100
Dim strTimerScript As String = "startClock();updateClock(" &
intTimeOut.ToString() & ");"
Page.RegisterStartupScript("timerScript", strTimerScript)


This code sample is constructed partly from memory, and partly from some
code snippets I had floating around. Haven't used it for a coupla years
now, though it worked perfectly back then, but it was being used on a
classic ASP website, not .NET. That shouldn't be an issue though, as it's
all client-side code. If there's any problems, let me know, and I'll try
and help :)

Regards,

Mun
 
N

Nedu N

Thanks Mun...
I tried but i am make it working...i just tried with the script that you
gave me..

I created a js file in my project itself - TimeoutTimer.js
and i referenced this on one of my page's HTML as reference it using <script
language="JavaScript"
src="TimeoutTimer.js"></script>.

and i had following code in my page load
Session.Timeout = 10; //i am ust overriding this...

int intTimeOut = Session.Timeout * 100;

Global.strScript = "startClock();updateClock(" + intTimeOut.ToString() + ");

Page.RegisterStartupScript("timerScript", Global.strScript);



But the output that i am getting is the following displayed on my page as a
string...i think the the javascript was not executed...woudl u please tell
me what is the problem since i am new to scripts..

startClock();updateClock(1000)





Munsifali Rashid said:
What you need to do, is start a javascript timer on each page load, and then
update the timer every second until the session expires. If the user
navigates to a different page, the clock will reset as they are actively
using the session.

Create a timers javascript file and put the following two functions in it.
This script must be referenced in every page on which you want to show the
popup. I.e. save it as "includes/timers.js" and then each page must
reference it using <script language="JavaScript"
src="includes/timers.js"></script>.


function startClock()
{
dWatch = 0;
dStarted = new Date();
}
function updateClock(iTimeOutAlert)
{
setTimeout("updateClock('" + iTimeOutAlert + "');", 100);
dNow = new Date();
dWatch = dNow.getTime() - dStarted.getTime();
dClock = Math.round(dWatch/1000);
if (dClock == iTimeOutAlert)
{
alert("Warning!\n\nYour session has expired.\nRedirecting to login
page...");
window.location.href = "loginpage.aspx";
}
}


Once this is done, you need to modify pages using the alert to call
startClock() and updateClock(). You can do this using the following (in the
Page_Load function):


[C#]
int intTimeOut = Session.Timeout*100;
string strTimerScript = "startClock();updateClock(" + intTimeOut.ToString()
+ ");"
Page.RegisterStartupScript("timerScript", strTimerScript);


[VB.NET]
Dim intTimeOut as Integer = Session.Timeout*100
Dim strTimerScript As String = "startClock();updateClock(" &
intTimeOut.ToString() & ");"
Page.RegisterStartupScript("timerScript", strTimerScript)


This code sample is constructed partly from memory, and partly from some
code snippets I had floating around. Haven't used it for a coupla years
now, though it worked perfectly back then, but it was being used on a
classic ASP website, not .NET. That shouldn't be an issue though, as it's
all client-side code. If there's any problems, let me know, and I'll try
and help :)

Regards,

Mun



Nedu N said:
Thanks Mun.
I was trying to use Timer object for Session Timeout popup and redirect
already, but it was not not working...
would you give me exaple of how to code time controls to popup a message and
redirect to login page when the session times out..
(using Session.Timeout property to determine the session timout).

Thanks
Nedu
 
M

Munsifali Rashid

There's an error in the code - I forgot to wrap the javascript in <script>
tags.

Global.strScript = "startClock();updateClock(" + intTimeOut.ToString() + ");

Should be:

Global.strScript = "<script language='JavaScript'>startClock();updateClock("
+ intTimeOut.ToString() + ");</script>";

Also, the number passed in should be the Session.Timeout in seconds, so
intTimeOut should be:

int intTimeOut = Session.Timeout * 60;

I've just tested this code, and it seems to be working.

Hope this helps,

Mun
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top