Javascript 如何保持用户';网站上的活动日志?
我正在开发一个需要记录用户活动的网站,比如user1已经登录,user2已经更新了一个叫做ABC的东西,并将它们保存在数据库中。我正在寻找一些源代码和描述。我是个新手,自学网络开发。我搜索了很多,但没有得到很好的答案。我会用Javascript 如何保持用户';网站上的活动日志?,javascript,php,mysql,Javascript,Php,Mysql,我正在开发一个需要记录用户活动的网站,比如user1已经登录,user2已经更新了一个叫做ABC的东西,并将它们保存在数据库中。我正在寻找一些源代码和描述。我是个新手,自学网络开发。我搜索了很多,但没有得到很好的答案。我会用静态方法编写一个单例记录器,记录器::logUserAction($actionType,$actionParams)。 nethod将在db表中插入一条新记录[action int,params text,date timestamp] 我将使用静态方法编写一个单例记录器,
静态方法编写一个单例记录器,记录器::logUserAction($actionType,$actionParams)
。
nethod将在db表中插入一条新记录[action int,params text,date timestamp] 我将使用静态方法编写一个单例记录器,记录器::logUserAction($actionType,$actionParams)
。
nethod将在db表中插入一条新记录[action int,params text,date timestamp] 对于基本记录器,首先,您应该决定是需要数据库日志还是文件格式的日志。如果日志将位于数据库中,则需要创建一个接收日志的数据库表
在这两种情况下,您都需要创建一个函数来生成日志。在将此功能放在网站上之前,请单独测试它
完成后,您应该在web结构、登录、数据库更改(记录对象更改)等方面调用此函数
日志函数可以是从PHP文件调用的静态
函数,如果您使用的是OO体系结构,甚至可以是日志类
如果您使用的是诸如或之类的框架,则会有更高级的日志功能,但您没有提供太多有关web应用程序的信息
OBS:这种方法适用于服务器端日志记录。要记录客户端操作(用户单击了某个内容),您需要对服务器进行AJAX调用以调用日志功能。对于基本日志记录器,首先,您应该决定是否需要数据库日志或文件格式的日志。如果日志将位于数据库中,则需要创建一个接收日志的数据库表
在这两种情况下,您都需要创建一个函数来生成日志。在将此功能放在网站上之前,请单独测试它
完成后,您应该在web结构、登录、数据库更改(记录对象更改)等方面调用此函数
日志函数可以是从PHP文件调用的静态
函数,如果您使用的是OO体系结构,甚至可以是日志类
如果您使用的是诸如或之类的框架,则会有更高级的日志功能,但您没有提供太多有关web应用程序的信息
OBS:这种方法适用于服务器端日志记录。要记录客户端操作(用户单击了一些东西),您需要对服务器进行AJAX调用以调用日志函数。您可以通过多种方式实现这一点
对于登录/注销活动,您可以在数据库中创建一个名为“login\u activities”的表
您可以在其中存储有关特定登录/注销活动的数据。
您可能需要以下列:
user_id(int)-登录或注销的用户的id
日期和时间(datetime)—用户登录或注销的日期和时间
用户ip(varchar)-用户登录或注销的ip
activity_name(varchar)-这可能以值“login”和“logout”为例,并将指示用户是登录还是注销
前
id |用户id |日期和时间|用户ip |活动名称|
1 | 1 | 2017-17-03 12:00:00 | 192.168.0.1 |登录
2 | 1 | 2017-17-03 12:15:00 | 192.168.0.1 |注销
表中的第一行将让您知道id为“1”的用户,该用户在2017-17-03 12小时从ip 192.168.0.1登录。
第二行表示id为“1”的用户在2017-17-03 12:15从ip 192.168.0.1注销
在数据库中创建此表,然后在处理用户登录的代码中创建此表,
如果用户登录成功,您可以使用这样的php代码来获取所需的数据
$user_id = $_SESSION['user_id']; // if you stored users id into session and i suppose you did
$user_ip = $_SERVER['REMOTE_ADDR']; // will give you the ip address from which the user logged in
然后,您可以执行以下sql语句将数据插入login_activities表:
(这是一个简单的例子-使用PDO或任何其他方法来防止SQL注入!!!)
在用户单击页面上的“注销”按钮并成功注销后,在实际取消其会话之前,您可以使用与上述相同的方式提取用户id和ip,并执行以下sql语句将数据插入login_activities表中:
$sql = "INSERT INTO login_activities(user_id, date_and_time, user_ip, activity_name) VALUES($user_id, NOW(), $user_ip, 'LOGOUT'");
至于更新,这是一个更具体的一点,我需要一些关于您的项目的更多信息,给您提供更多有用的信息,但我建议使用数据库触发器
触发器允许您在发生某些事件(选择、更新、插入、删除)时在数据库中执行一些sql
我建议您阅读一些关于数据库触发器的文章,因为这个概念其实并不难理解,而且对于希望在数据库中保存日志等情况非常有用 您可以通过多种方式实现这一点
对于登录/注销活动,您可以在数据库中创建一个名为“login\u activities”的表
您可以在其中存储有关特定登录/注销活动的数据。
您可能需要以下列:
user_id(int)-登录或注销的用户的id
日期和时间(datetime)—用户登录或注销的日期和时间
用户ip(varchar)-用户登录或注销的ip
activity_name(varchar)-这可能以值“login”和“logout”为例,并将指示用户是登录还是注销
前
id |用户id |日期和时间|用户ip |活动名称|
1 | 1 | 2017-17-03 12:00:00 | 192.168.0.1 |登录
2 | 1 | 2017-17-03 12:15:00 | 192.168.0.1 |注销
表中的第一行将让您知道id为“1”的用户,该用户在2017-17-03 12小时从ip 192.168.0.1登录。
第二行将指示id为的用户
$sql = "INSERT INTO login_activities(user_id, date_and_time, user_ip, activity_name) VALUES($user_id, NOW(), $user_ip, 'LOGOUT'");