我需要在网站中管理多个会话。我需要启动一个特定于页面的私人会话,所以当我离开页面时它将终止。但是当我浏览到上一页时,我也应该可以使用我的旧会话了。例如:
Page A -> Starts Session A
Page A -> is forwarded to Page B
Page B -> Start its own private Session B
Page B -> Completes the tasks and Terminates its private session B
Page B -> Redirects to Page A
Page A -> Again display the page using its old Session A
我可以在同一网站内开始多个会话吗?如果是,我该如何管理?
答案 0 :(得分:1)
您可以使用session_name,但如果页面B在单个页面查看完成后立即终止其会话,那么首先使用会话似乎是浪费时间。
答案 1 :(得分:0)
也许是类似的东西;
$_SESSION[$_SERVER['PHP_SELF']]['name'] = $value;
//Page X termination
unset($_SESSION[$_SERVER['PHP_SELF']]);
简单地在这里简单地抛出想法。
扩大会议数据的私有化;包装器可以提供帮助:
class Session implements ArrayAccess{
private $_data = array();
public function __construct(){
$this->_data = $_SESSION;
}
public function offsetSet($offset, $value){
$this->_data[$_SERVER['PHP_SELF']][$offset] = $value;
}
public function offsetExists($offset){
return isset($this->_data[$_SERVER['PHP_SELF']][$offset]);
}
public function offsetUnset($offset){
unset($this->_data[$_SERVER['PHP_SELF']][$offset]);
}
public function offsetGet($offset){
return isset($this->_data[$_SERVER['PHP_SELF']][$offset])
? $this->_data[$_SERVER['PHP_SELF']][$offset]
: null;
}
public function __destruct(){
$_SESSION = $this->_data;
}
}
$session = new Session;
//etc
鉴于查询字符串或更多字符串是相关的,您可以散列密钥的相关值。
例如:$key = md5($_SERVER['PHP_SELF'] . $_SERVER['QUERY_STRING']);
虽然使用$_SERVER['REQUEST_URI']
作为键可能就足够了。