FAQ ASP.NET/C#Consultez toutes les FAQ

Nombre d'auteurs : 39, nombre de questions : 371, dernière mise à jour : 22 septembre 2007 

 
OuvrirSommaireProgrammation coté clientJavascriptSessions

Dans certains cas, il est important pour l'utilisateur d'être averti que sa session va bientôt se terminer, par exemple lorsqu'il peut encoder des informations.

Un exemple complet où l'utilisateur est juste averti du temps restant:

 
Sélectionnez

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
	<title>Untitled Page</title>
	<script type="text/javascript">
	function temps_deco()
	{
		value = document.getElementById('timeOut').innerHTML;
		value = value-1;
		document.getElementById('timeOut').innerHTML = value;
		if (value == 120)
			document.getElementById('expired').style.display = 'block';
			// on peut également imaginer de faire un retour serveur (__doPostBack)
		else
			setTimeout("temps_deco()", 1000);
	}
    </script>
</head>
<body>
	<form id="form1" runat="server">
	<div align="center">
		Votre session va se terminer dans <asp:Label runat="server" ID="timeOut" /> secondes.<br/>
		Nous vous conseillons donc d'enregistrer les informations fournies...<br/>
		Vous realiserez donc une sauvegarde et une continuité de votre session.
	</div>
	<div id="expired" style="display: none;">Attention: La session se termine dans moins de 2 minutes</div>
	</form>
	<script type="text/javascript">
		temps_deco();
	</script>
</body>
</html>

et dans le Page_Load:

 
Sélectionnez

protected void Page_Load(object sender, EventArgs e)
{
	timeOut.Text = (Session.Timeout*60).ToString();
}
Créé le 1er février 2006  par Didier Danse

Il faut tout d'abord intercepter l'événement sur le client. Pour cela, incluez dans le header de vos pages le script suivant:

 
Sélectionnez

<script id="clientEventHandlersJS" language="text/javascript">
<--

function window_onbeforeunload()
{
	window.navigate('disconnect.aspx');
}

//-->
</script>
				

Ensuite, il faut changer le tag body:

 
Sélectionnez

<body language="javascript" onbeforeunload="return window_onbeforeunload()">
				

A la fermeture du navigateur, la fontion javascript window_onbeforeunload est appelée et la page disconnect.aspx est chargée. Il ne reste plus qu'à fermer la session dans le Page_Load de cette page.

 
Sélectionnez

private void Page_Load(object sender, System.EventArgs e)
{
	Session.Abandon();
}
				
Mis à jour le 8 mars 2009  par rami
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2007 Dotnet Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.