Codeigniter用户跟踪访问者


Codeigniter user tracking for visitors

我正在Codeigniter网站上工作,并试图为访问者(非注册用户)实现用户跟踪功能。

我想跟踪(ip地址,from_page, to_page, time_stamp)在每个页面重定向,因为我想只跟踪临时用户,我也需要访问数据库,检查帐户是否存在。

我的问题是在哪里写我的代码,以便Codeigniter在每次重定向之前自动检查,(记住,那个地方应该有访问数据库或会话的权限)。

检查每个控制器文件会产生很多冗余代码,我不认为htaccess文件可以做到这一点。

-谢谢

有多种方法可以做到这一点:

一种方法是在helpers文件夹中创建一个帮助文件,比如trackuser_helper.php。在这个文件中创建一个函数来执行跟踪(比如trackUser())。然后自动加载这个文件到config/autoload.php里面,像这样:

/*
| -------------------------------------------------------------------
|  Auto-load Helper Files
| -------------------------------------------------------------------
| Prototype:
|
|   $autoload['helper'] = array('url', 'file');
*/
$autoload['helper'] = array('trackuser'); //ignore the '_helper.php' portion of the filename

现在你可以在每个控制器中调用trackUser()

我认为更好的第二个选择是使用CodeIgniter

提供的Hooks

这些在config/hooks.php中定义如下:

$hook['pre_controller'][] = array(
                                'class'    => 'MyClass',
                                'function' => 'Myfunction',
                                'filename' => 'Myclass.php',
                                'filepath' => 'hooks',
                                'params'   => array('param1', 'param2', 'etc')
                                );

数组索引与你想要使用的特定钩子点的名称相关。在上面的例子中,钩子点是pre_controller。下面是一个勾点列表。下列项应该在关联钩子数组中定义:

1.Class—您希望调用的类的名称。如果你喜欢用如果是过程函数而不是类,请将该项留空。

2。Function -您希望调用的函数名。filename文件名包含类/函数。

3。Filepath—目录的名称包含您的脚本。注意:您的脚本必须位于目录位于应用程序文件夹内,因此文件路径为相对于那个文件夹。例如,如果您的脚本位于应用程序/钩子,您将简单地使用钩子作为文件路径。如果您的脚本位于您将使用的application/hooks/utilities中钩子/实用程序作为文件路径。没有尾斜杠。

4。参数-您希望传递给脚本的任何参数。此项为可选项。

指定要在每次控制器加载之前执行哪个函数调用。这样,您甚至不需要将trackuser()添加到每个controller。这些钩子可以是pre_controllerpost_controller。您可以在CI文档中阅读更多关于钩子的信息。