您的位置:首页 > 数据库

记录用户在页面停留时间并写入数据库

2013-04-26 14:26 369 查看
花了很长时间终于把这个功能做出来了,跟大家分享下。用的是jquery。

有两个页面action.aspx和action_to_sql.aspx

action.aspx代码是:(CS文件里面没有代码)

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="action.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>无标题页11111</title>
<script src="script/jquery.js" type="text/javascript"></script>//引用jquery(好东西来的,没学会的人编程能力肯定是起步阶段,即使你学了很久编程,本人就是后悔太迟学了)
<script language="javascript" type="text/javascript">
var start;
var end;
var state;
start = new Date();//start是用户进入页面时间

$(document).ready(function() {//用户页面加载完毕,这个是jquery初始化的语句(不知道初始化这个词用的是否正确)
$(window).unload(function() {//页面卸载,就是用户关闭页面、点击链接跳转到其他页面或者刷新页面都会执行
end = new Date();//用户退出时间
state = end.getTime() - start.getTime();//停留时间=退出时间-开始时间(得到的是一个整数,应该是毫秒为单位,1秒=1000)
$.post("action_to_sql.aspx", { state_time: state, state_url: window.location.pathname ,state_title: $("title").html() });//把值传到action_to_sql.aspx页面写入数据库(一开始我不想这样做,希望在本页面直接处理写入数据库,后来发现我的是生成静态页面的,无法在原来页面完成数据处理,所以学习jquery,并采用这种方法解决,才发现jquery真的是个好东西。)
});
});
</script>
</head>

<body>
<form id="form1" runat="server">
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="action_out.aspx" >退出网站</asp:HyperLink>
</form>
</body>
</html>


action_to_sql.aspx.cs代码是:(action_to_sql.aspx文件里面没有代码)

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

public partial class action_to_sql : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Session["user"] != null)//要记录哪个用户在哪个页面停留时间必须用户先登录
{
Hashtable ht = new Hashtable();
ht.Add("user_id", Session["user_id"]);//用户ID
ht.Add("state_time", Request["state_time"]);//用户停留时间(时间应该是毫秒为单位吧,因为记录的时间1面=1000)
ht.Add("state_url", Request["state_url"]);//用户在哪个页面停留
ht.Add("state_title", Request["state_title"]);//停留页面的title
ht.Add("ipaddress", Request.UserHostAddress);//用户IP
com.bn388.video.BLL.log.insert(ht);//写入数据库,这里是一个类来的,当然你也可以用自己的类
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: