Zend_Session 有问题。我需要知道,如果该用户的 Session 最初是第一次启动的,还是刚刚在当前请求中更新。
我需要知道这一点以进行统计。如果会话已初始化(意味着用户第一次访问我的应用程序),我想将请求的引用者存储在某个 db-table 中。当然,我只想针对本次会议中的第一个请求执行此操作。
该手册讨论了方法Zend_Session::isStarted()
和Zend_Session::sessionExists()
. 但似乎这两种方法都只适用于当前请求(这意味着如果我Zend_Session::start()
在我的应用程序的某个地方使用它会返回 true)。
我的方法如下:我试图重写Zend_Session::start()
以将统计数据插入到我的数据库表中。
// Somewhere in my bootstrap:
My_Session::start();
// This is my class (eased up)
class My_Session extends Zend_Session
{
public static function start($options)
{
parent::start($options);
if(/* Here I need the condition to test, if it was the initial session-starting... */)
{
$table = new Zend_Db_Table(array('name' => 'referer'));
$row = $table->createRow();
$row->url = $_SERVER['HTTP_REFERRER'];
$row->ip = $_SERVER['REMOTE_ADDR'];
// ... some columns ...
$row->save();
}
}
}
有人有什么想法吗?