![]() |
Trace and log user actions...
This hack was requested by ossi69 and John Mac.
This is a pretty simple hack that allows you to track and document a user's actions while they are logged into your board. Every click made by the user makes a brand new entry in a log file. The log file entries include, username, IP address, date and time, and the URL clicked on. The user actions are documented even before the user has a chance to see the page he clicked on. Templates affected by this hack: none Tables affected by this hack: user Files affected by this hack: global.php, admin/user.php Execute the following query to create a new field in the user table: alter table user add trace smallint(5) unsigned DEFAULT 0 NOT NULL; You also need to create a brand new directory in your forums directory by the name of tracelog. You need to make sure that your give the appropriate\ read/write permissions to this directory so that the http server on your host can create files in there. Here is a sample output: Code:
Zed, 192.168.1.101 , 2003-04-28 18:31:30, /forums/index.php |
Is this supposed to be unsigned?
alter table user add trace smallint(5) unsigned DEFAULT 0 NOT NULL; Will this also add a line under each user's session so you can tell where one leaves off and one starts? |
Unsigned is fine. The possible values for that field are 0 and 1.
Start times are when the user signs on for the first time. And the leaving time should be between the time of the last entry and the time for the cookie timeouts on your board. ;) |
I see, thanks! ;)
Wouldn't it be better to have a line separate each users session though in case the log gets kind of long? Like this: Zed, 192.168.1.101 , 2003-04-28 18:31:30, /forums/index.php Zed, 192.168.1.101 , 2003-04-28 18:31:36, /forums/forumdisplay.php?forumid=9 Zed, 192.168.1.101 , 2003-04-28 18:31:42, /forums/showthread.php?threadid=143901 Zed, 192.168.1.101 , 2003-04-28 18:31:51, /forums/rules.php Zed, 192.168.1.101 , 2003-04-28 18:31:53, /forums/forumdisplay.php?forumid=9 ------------------------------------------------------------------------- Boofo, 192.168.1.101 , 2003-04-28 18:32:07, /forums/showthread.php?threadid=143901 Boofo, 192.168.1.101 , 2003-04-28 18:32:11, /forums/index.php Boofo, 192.168.1.101 , 2003-04-28 18:32:15, /forums/forumdisplay.php?forumid=103 ------------------------------------------------------------------------- Test, 192.168.1.101 , 2003-04-28 18:32:28, /forums/showthread.php?threadid=225576 Test, 192.168.1.101 , 2003-04-28 18:32:38, /forums/member.php?action=getinfo&userid=4112 Something like that? And will there be a way to prune the log? |
This hack is activated by user participation on the board. TO do this you would have to take the last activity time by the user and compare it against the current time and if it is greater than your $cookietimeout then you would output a line separator.
As for the pruning, I figured the file entries can just be deleted. or edited manually. They really don't take up that much space to cause real concern. ;) |
Wouldn't comparing the username do the job, too?
|
Quote:
Nope, it is per user. Each user gets his/her own file in the tracelog directory, i.e., username Zzed will have his entries be written to Zzed.log, and username Boofo will have his entries written to Boofo.log. ;) |
I just got it installed and saw that. Sorry. ;)
It looks great! Can it be done by the time line like you mentioned before? Would make it easier on a big log. ;) Also, is there a way to have it be read form the Admin CP instead of having to go FTP to read it? |
I'll look into the line separator thing. ;)
You can view the file through your browser by going to http://myforum.com/forums/tracelog/Zzed.log Or you can get a directlry listing by going to: http://myforum.com/forums/tracelog |
Thanks, my friend. Great hack. I like it. ;)
How can I add the link in the user's admin cp profile so you can just click it and read it? |
I'll get that code out along with the line separators. ;)
|
phenomenal Zzed. Many thanks again!
|
Quote:
You're very welcome. Let me know how you like it. :) |
*clicks install* very nice... Could you add to the user log where they came from when the log file startes like another area of my site or a link to the external site they came from?
|
Quote:
You can modify the sprintf() statement and add another entry for $url to see their referring URL. ;) But the information will show up on every line along with the rest of the info. |
Are ALL users logged or only those you choose?
|
Only those you set to be traced from the Admin CP.
|
Cool!
/me licks install!!! |
Thanks Zzed,
|
Quote:
So virtually ANYONE can see anyone else's activities by just entering someone's nick.log at tracelog subdir? Any way to prevent this? |
Great!!
I can use this to keep an eye on some Mods too.... :D ;) |
Hi Zzed, install is clicked :D
Anyone an idea how to protect the directory for unallowed previews ??? Great hack, will help me to find the ones I don't like Greets |
Thank you everyone for your kind words. :)
I am working on a solution for the protection of that directory. |
Ok, for all of you who expressed your concern about the security and protection of that page, I created an index.php that allows only the Administrators to view the contents of that directory. Anyone else other than administrators will get the No Permission page. ;)
Drop the attached file in your tracelog directory and it will take care of everything. The output generated by the script is in table format that shows filename, size, last modified time and last accessed time. Hope this helps. ;) |
U r00l! ;)
Tu Zzed! |
mmmm...errrr... any1 can still see them!
|
Quote:
Nope, hit refresh on your browser. It is still sitting in your cache. ;) |
U rock!!! ;)
|
Quote:
|
a couple suggestions
you should change the log file to userid instead of username. names with odd chars will cause problems. I just installed, but put the tracelog dir in the admin dir. everyone already has that protected. nice idea. I look forward to any addons. soem of my members need a little watching. |
Nice point!
Is that as simple as adding admin/tracelog/ instead of tracelog/ on the first replacement? I guess that's more secure than the index.php file? The userid thing may be a good point too... (Ps. working on vb2.2.0 ;)) |
/me clicks install...
it would be a wicked idea to have the logs viewable in the admin cp....like a link or something!!! |
Great hack! I'm going to install it right away! Thanks, Zzed this is just what i was looking for! :D
|
does this create a lot of queries
|
Quote:
The only time there is a query is when you try to visit the contents of the tracelog directory. |
this was just what i was looking for!
thanks :) |
You are welcome. :)
|
Quote:
|
hi I'm new here and this is a really nice hack. I was wondering how to automatically track all users instead of having to go into each one and selecting 'track user'?
|
Quote:
Are you sure you want to do that? :confused: If so then replace this: Code:
if($bbuserinfo[trace] == 1) { Code:
if(1) { |
All times are GMT. The time now is 04:43 PM. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
![]() |
|
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|