我正在开发电子商务网站,我想监控用户在特定会话中访问了多少页面。只有该网站的注册用户。 任何人都可以告诉我如何记录特定会话的用户的URL, 我正在使用php和mysql
答案 0 :(得分:2)
在应用程序中的某个时刻,您可以简单地执行:
$_SESSION['history'][] = $_SERVER['REQUEST_URI'];
因此将当前URI附加到会话的history
数组。您可以更直观,例如检查URI是否已存在,计算页面之间的时差以进行报告等。
答案 1 :(得分:1)
有多种方法可以做到这一点。这是一个快速演练:
创建一个包含两个字段的表('session_id','url');
每当网站加载时,请使用session_id()
读取sessionid,并使用此值将页面的网址存储在人们访问的每个网页的表格中。
加载页面后,通过$_SERVER['REQUEST_URI'];
读取网址,然后使用session_id()
的值并存储记录。
实施这个简单的技术后。你可以看到有多少人使用一个简单的查询来查看页面
SELECT count(*) FROM <YOURSESSIONTABLE> GROUP BY `<session_id_field>`
<子> P.S。这是基本示例之一,应根据您的要求进行更改
答案 2 :(得分:0)
有一个mysql表
UserID SessionID URI
1 XYZ /
1 XYZ /contact
1 ZYX /contact
每个加载的页面都将其插入表格
$query = "INSERT IGNORE INTO visits (`UserID`, `SessionID`, `Uri`)
VALUES ($userID, " . session_id() . ", " . mysql_real_escape_string(['REQUEST_URI']) . ")";
稍后您可以检查用户的会话并使用
计算所有不同的页面SELECT COUNT(URI) FROM visits WHERE UserID = $userID GROUP BY SessionID
您还可以将日期时间与会话相关联
答案 3 :(得分:0)
我创建了一个由System.Web.UI.Page
继承的基类,如
public class BasePage : System.Web.UI.Page
{
protected virtual void Page_Load(object sender, EventArgs e)
{
}
}
注意:make基类页面加载事件虚拟页面和其他页面页面加载事件覆盖,然后在每个页面加载事件中调用基类页面加载事件,如
base.Page_Load(sender, e);
每个页面都通过此基类继承,如
protected override void Page_Load(object sender, EventArgs e)
{
base.Page_Load(sender, e);
}
我是这样做的,
string pageName = Path.GetFileName(Request.PhysicalPath);
string serverName = HttpContext.Current.Server.MachineName;
string sessionId = HttpContext.Current.Session.SessionID;
string ipAddress = HttpContext.Current.Request.UserHostAddress;
然后通过SQL或LINQ查询在数据库中插入这些值...
我通过LINQ插入
VisitorInformation vPanel = new VisitorInformation()
{
PageName = Path.GetFileName(HttpContext.Current.Request.PhysicalPath),
ServerName = HttpContext.Current.Server.MachineName,
SessionId = HttpContext.Current.Session.SessionID,
IPAddress = HttpContext.Current.Request.UserHostAddress,
VisitorDate = Convert.ToDateTime(System.DateTime.Now.ToString()),
};
new BaseDAL().AddVisitorInfo(vPanel);