Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何保持用户';网站上的活动日志?_Javascript_Php_Mysql - Fatal编程技术网

Javascript 如何保持用户';网站上的活动日志?

Javascript 如何保持用户';网站上的活动日志?,javascript,php,mysql,Javascript,Php,Mysql,我正在开发一个需要记录用户活动的网站,比如user1已经登录,user2已经更新了一个叫做ABC的东西,并将它们保存在数据库中。我正在寻找一些源代码和描述。我是个新手,自学网络开发。我搜索了很多,但没有得到很好的答案。我会用静态方法编写一个单例记录器,记录器::logUserAction($actionType,$actionParams)。 nethod将在db表中插入一条新记录[action int,params text,date timestamp] 我将使用静态方法编写一个单例记录器,

我正在开发一个需要记录用户活动的网站,比如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]

对于基本记录器,首先,您应该决定是需要数据库日志还是文件格式的日志。如果日志将位于数据库中,则需要创建一个接收日志的数据库表

在这两种情况下,您都需要创建一个函数来生成日志。在将此功能放在网站上之前,请单独测试它

完成后,您应该在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'");