我创建了自己的Session Manager类,我只覆盖了一个方法,即destroy($ id)方法。我在那里写道:
public function destroy($id)
{
$result = parent::destroy($id);
$model = new Model_User();
$model->logoutUser($id);
return $result;
}
logoutUser();方法从logged_users表中删除登录用户,因为每次用户登录时,我都会在logged_users表中写入会话ID和userid。但显然这个方法没有被调用因为我每次检查表时用户都没有注销。可能是什么问题?
答案 0 :(得分:0)
您的代码段似乎没问题,所以我猜测问题会在以后的某个地方发生,可能在Model_User::logoutUser()
或在INSERT/UPDATE/DELETE
- 表中尝试logged_users
时。在代码块中尝试echo
和die($variable)
,看看它们是否已执行并且变量是否按预期设置(例如,如果调用了logoutUser()并且实际传递了$ id,请检入Model_User)。更好的是,花点时间学习基本的单元测试。 ;)
旁注:您的代码中似乎存在一些重复,因为您的Model_User不应执行logout()等操作。如果您想在表格中拥有会话状态,请查看Zend_Session_SaveHandler_DbTable。
logged_users - 表是不必要的。