我遇到了Zend_Session的问题。我需要知道,如果该用户的Session最初是第一次启动的,或者它刚刚在当前请求中更新过。
我需要知道统计数据。如果会话已初始化(意味着用户第一次访问我的应用程序),我想将请求的引用者存储在某个db-table中。这当然我只想在本次会议中为第一次请求做。
手册介绍了方法Zend_Session::isStarted()
和Zend_Session::sessionExists()
。但似乎两种方法仅适用于当前请求(意味着如果我在我的应用程序中的某处使用Zend_Session::start()
,则返回true)。
我的方法如下:
我试图覆盖Zend_Session::start()
以将统计数据插入到我的db-table中。
// 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();
}
}
}
有人有任何想法吗?
答案 0 :(得分:2)
我需要知道,如果此用户的会话最初是第一次启动,或者是刚刚在当前请求中更新过。
不是问题:
Zend_Session::start();
$my_logger = new Zend_Session_Namespace('my_logger');
if(isset($my_logger->has_already_visited_app) && $my_logger->has_already_visited_app) {
// this is not the first request
} else {
// this is the first request, do something here
// make sure to add the following
$my_logger->has_already_visited_app = true;
}