2010-11-25 12 views
1

많은 시간에 페이지 변수에 데이터를 저장합니다. 사용자가 한 페이지에서 다른 페이지로 이동할 때 자바 스크립트에서 세션을 종료하는 방법이 필요합니다. 그것이 가능합니다. 그렇다면 제발 나를 안내 해주십시오.자바 스크립트에서 세션을 종료하는 방법

미리 감사드립니다.

+0

세션을 종료하거나 세션 변수/키를 삭제 하시겠습니까? – Gidon

+0

변수와 함께 그가 의미하는 바를 설명하고 싶다고 생각합니다. 그는 완전히 그것을 죽이고 싶어. –

답변

7

당신은 세션 변수를 죽일 서버를 알 필요가있다.

유일한 방법은 JavaScript에서 Ajax를 사용하여 일부 사용자 정의 페이지를 호출하는 것입니다. 예를 들어 변수로 삭제하려는 세션 키를 사용하는 것입니다.

function kill_session() { 
    if (window.XMLHttpRequest) 
     {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else 
     {// code for IE6, IE5 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 

    xmlhttp.open("GET","session_destroyer.php",false); 
    xmlhttp.send(); 

    document.getElementById("id_of_a_hidden_div").innerHTML=xmlhttp.responseText; 
} 

그리고 당신의 session_destroyer.php의 힘은 다음과 같습니다 :

+1

+1 서버가 세션을 관리한다는 것을 상기시키기 위해. – Gumbo

+0

네가 잘됐다! – Gidon

2

세션 쿠키를 제거하십시오. PHP의 경우 PHPSESSID라고합니다. 이렇게하면 브라우저가 세션 ID를 잃어 버리므로 실제 세션 데이터에 더 이상 액세스 할 수 없습니다.

자바 스크립트에서 쿠키를 처리하는 방법은 여기를 참조하십시오 : http://www.quirksmode.org/js/cookies.html

+0

그 세션은 쿠키에 저장됩니까? 이것은 쿠키를 비활성화하면 세션과 함께 작동하는 웹 사이트를 사용할 수 없음을 의미합니다. –

+1

@Florian 그건 맞지 않아. 세션의 ID는 대부분 쿠키에 저장된 시간입니다. 실제 세션 데이터는 서버에 저장됩니다. 그러나 ID로 쿠키를 제거하면 클라이언트가 세션을 잃어 버리고 그게 내가 구술꾼이 원했던 것이라고 생각합니다. 실제 데이터는 나중에 가비지 수집기에서 제거되지만 ID가 없으면 액세스 할 수 없으므로 신경 쓰지 않아야합니다. –

+0

아, 나는 그것을 몰랐다. 고마워;) –

2

당신은 예를 들어, AJAX 이벤트가 발생해야 세션 객체가 서버 객체가

<?php 
    session_start(); 
    session_destroy(); 
?> 
+1

코드가 실행되는 것은 아닙니다. 사용자가 코드를 제거하면 브라우저가 코드를 실행하지 않기로 결정할 수 있습니다 ... –

+0

그걸 어떻게 의미합니까? 예를 들어 onUnload = "kill_session()"이라는 본문에서 선언하면 실제로 모든 브라우저에서 실행됩니다. –

+1

클라이언트 - 서버 개념에 대해 배울 점이 몇 가지 있습니다. 클라이언트쪽에있는 것은 클라이언트의 통제하에 있으며 그 사람이 변경할 수 있습니다. –

1

, 당신은에서 액세스 할 수 없습니다 자바 스크립트를 직접. 세션을 종료하려면 서버에 대한 ajax 호출을 작성해야합니다. jquery를 사용하여 매우 쉽게이 링크를 확인할 수 있습니다. http://api.jquery.com/jQuery.ajax/

+0

답변을 주셔서 감사합니다. – Thomas

관련 문제