2011-01-10 7 views
0

웹 사이트에서 여러 세션을 관리해야합니다. 나는 매우 특정한 페이지 인 개인 세션을 시작할 필요가 있으므로 일단 페이지에서 벗어나면 종료 될 것이다. 그러나 이전 페이지를 탐색 할 때도 이전 세션을 사용할 수 있어야합니다. 예 :독립적 인 개인 세션

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 

같은 웹 사이트 내에서 여러 세션을 시작할 수 있습니까? 그렇다면 어떻게 관리 할 수 ​​있습니까?

답변

1

session_name을 사용할 수 있지만 페이지보기가 완료되는 즉시 페이지 B가 세션을 종료하면 처음부터 세션을 사용하는 데 시간이 낭비되는 것처럼 보입니다.

+0

페이지 B는 전체 프로세스가 완료되면 세션을 종료합니다. B 페이지의 단순한로드는 아무 것도하지 않습니다. – Starx

+0

귀하의 링크에서 몇 가지 예를 보았습니다. 그 중 하나는 쿠키를 사용했습니다. 쿠키에 의존하면 모든 것을 손상시킵니다. 다른 아이디어가 있습니까? – Starx

+0

세션에 쿠키를 저장하는 것은 세션이 작동하는 방식입니다 (쿼리 문자열에서 세션 ID를 밀 때 제외). 다른 방법으로는 할 수 없습니다. – Quentin

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']을 키로 사용해도 충분할 수 있습니다.

+0

그래 .... 나는 이것에 대해 생각했다. 그러나 모든 페이지는이 세션에 대한 접근권을 가지고있다 .... 나는 성취하기 위해 노력하고있는 것이 아니다. 고맙다 여하튼 : D – Starx

관련 문제