2011-02-27 6 views
0

쿠키가 꺼져 있어도 같은 페이지에서 세션 변수를 사용할 수 있다고 가정하면 맞습니까?PHP : 세션 변수 범위 - 쿠키 비활성화

내 스크립트에 전역 배열이 필요합니다 (현재 스크립트에서만 페이지 전체가 아님). 스크립트의 상단에 등록 할 때 :

$_SESSION['test'] = array('ok'); 

후 $ _SESSION [ '테스트'] 모든 포함 된 파일, 기능과 클래스에서 '확인'될 것입니다, 쿠키는 disbled 경우에도?

고마워.

+0

다음을 시도해 보셨습니까 $ test = array ('ok'); function myFunc() { global $ test; // 테스트 할 물건으로 } – Zoidberg

+0

나는 함수에서 전역 변수를 싫어한다. – Ilyssis

+0

그래서 당신은 전역을 싫어하지만 그것을 사용하고 싶습니까? 그건 이해가 안돼 .... –

답변

3

전역 변수를 사용하려면 $GLOBALS을 사용하십시오. 물론 코드를 재구성하고 필요한 값을 매개 변수로 전달하는 것이 더 좋습니다.

하지만 네 세션은 쿠키 없이도 가능합니다. 그런 다음 세션 ID는 쿠키에 저장되지 않고 URL에 전달됩니다. 그러나 왜 "학대"세션입니까?

More information about variable scope.

+0

네, 고마워요. $ _GLOBALS – Ilyssis

+0

Btw, 나는 $ GLOBALS을 의미한다고 생각합니다.) – Ilyssis

+0

@Ilyssis : Ups. 예 :) 고정 ('$ _GET'과'$ _POST' ...)을 혼동합니다. –

0

쿠키가 비활성화 된 경우에도 가능합니다. 세션을 설정 해제하려는 경우 당신은 다음

unset($_SESSION['test']); 

또 다른 하루를 사용해야합니다, 당신은 당신의 프로그램에있는 어떤 범위 세션을 호출 할 수 있습니다, 내 모든 쿠키를 삭제했고, 변수 세션 ON이었다 내 페이지에서 .. 설정을 해제 할 때까지 ...

설정 해제는 GLOBALS 및 파괴하려는 모든 변수에 사용할 수 있습니다.

세션에 등록 된 모든 데이터를 삭제하려면 session_destroy 을 사용하십시오.이 경우 세션 변수는 여전히 존재하지만 비어 있습니다.

모든 것 !!

0

나는 당신이 어떤 세션인지를 읽을 필요가 있다고 생각한다. 세션 php는 session_start()가 첫 번째 코드 라인 인 한 모든 페이지에서 사용할 수 있습니다. 그런 다음 설정된 모든 세션 변수는 사용자가 세션을 종료 할 때까지 모든 페이지에서 액세스 할 수 있습니다. 대개 브라우저를 닫으면됩니다. 쿠키를 사용 중지해도 세션 사용에 지장이 없습니다.

+0

세션 ID는 쿠키에 저장되며, GET을 통해 세션 ID를 전달하지 못하게하는 php 설정이 있습니다. 따라서 어떤 경우에는 쿠키를 비활성화하면 세션 사용을 방해하게됩니다. –

+0

session_start()가 첫 번째 코드 줄 일 필요는 없습니다. 출력이 생성되기 전에 단순히 호출되어야합니다. 그리고 쿠키를 비활성화하면 세션을 방해합니다. 숨겨진 양식 필드와 URL을 통해 세션 ID를 전달할 수 있지만 PHP에서 토큰을 자동으로 추가 할 수 없기 때문에 많은 작업이 필요합니다. –

+0

두 가지 의견을 보내 주셔서 감사합니다. 나는 미래를 위해 그들을 기억하려고 노력할 것이다. –