php - session配置 - session_unset




如何销毁一个特定的PHP会话 (2)

如果你希望能够“踢”一个用户的会话,唯一的办法就是如果你使用MySQL(或其他的db,sqlite甚至是)你的会话存储。

然后,你可以简单地从数据库中删除条目来杀死一个会话。

这也可以让你做某些事情,如“控制”特定用户的会话和其他东西:)

看到这一个非常基本的运行通过: http : //www.devshed.com/c/a/MySQL/Custom-Session-Management-Using-PHP-and-MySQL/ (不是最好的例子,但足够好的完整示例开始你)。

编辑

此外,如果通过合作伙伴网站注销,另一种方法,我曾经在过去(这是与O2和其他这样的网站),他们给了一个“回调”(大多数情况下,REST API调用),他们也需要调用当用户注销他们的网站时。

我正在寻找如何在PHP中销毁特定会话的见解。 通过合作伙伴网站,用户使用令牌登录主网站并获得完整会话。

如果用户从合作伙伴网站注销,合作伙伴网站也可以调用销毁功能。 然后我们也应该注销我们自己的用户。

什么是最好的办法呢? Zend_Session销毁方法不接受参数,PHP函数session_destroy也不行。

我正在考虑两个选择:

  1. 直接从文件/ memcache中删除会话信息,但宁愿比这更“清洁”的方法。

  2. 检查每个页面请求是否是“令牌”用户; 如果通过维护列表来检查它们的令牌是否过期。 这增加了繁忙的网站的开销,但可能是我唯一的选择。

还是有没有第三个/更好的方法,我没有看到?


数据库解决方案意味着会话数据库需要在主网站和合作伙伴网站之间共享,而这往往不是这样的情况。或许沿着这些微不足道的东西就足够了?

<img src="mainwebsite/logout.php">

mainwebsite / logout.php:

<?php session_destroy(); ?>




zend-framework