2010-11-20 11 views
0

CakePHP 응용 프로그램에서 ".js"파일에 액세스해야하는 일부 컨트롤러에서 세션 변수를 만들고 있습니다. 이 작업을 수행 할 수있는 방법이 있습니까?CakePHP의 .js 파일에서 세션 변수에 액세스하는 방법

+1

정확히, 왜요? 세션 변수는 서버 측에만 *되도록 설계되었습니다. – strager

+0

동의, 세션 변수 또는 모든 서버 측 변수는 클라이언트 측 코드에서 직접 처리/액세스하면 안됩니다. 난 내 대답 –

+0

strager, sandeepan에서 한 것처럼 그들을 전달하는 것이 좋습니다 : 그래서 당신은 세션에서 사용자 이름을 저장할 때 그 데이터 클라이언트 측에 대한 액세스를 허용하지 말고 있습니까? – dogmatic69

답변

2

는이 같은 매개 변수로 전달 제안 -

<a onclick="some_function('<?php echo $_SESSION['var'] ?>')">Click</a> 

하고이를 자바 스크립트 함수 some_function()을 인라인으로 할당하는 대신 처리합니다. 이렇게하면 자바 스크립트 파일을 서버 측 코드에서 자유롭게 사용할 수 있습니다. 이것은 가장 깨끗한 방법입니다.

세션 변수가 서버 측이기 때문에 인라인 코드를 통해 클라이언트 측 언어로 직접 처리하면 안됩니다.

+0

1

원하는 값이 포함되도록 JS 파일을 동적으로 생성해야합니다. 당신은 PHP를 통해 .js 파일을 구문 분석하는 서버를 설정할 수 있습니다, 또는 당신은 단지 JS 파일 .php 이름을 지정할 수 있습니다 :

var myVar = '<?php echo addslashes($_SESSION['myVar']); ?>'; 
+0

은 코딩 표준 포인트와 js의 좋은 PHP 코드를 혼합 한 것입니까? 이 작업을 수행하는 대신 서버 측 값이 필요한 경우 js 파일을 별도로두고 js 함수에 매개 변수를 전달하는 것이 낫지 않습니까? –

+0

@sandeepan : 물론, 처음에는 인라인 스크립트를 제안하려고했으나 OP가 .js 파일을 언급했기 때문에 내 대답 만 편집했습니다. 세션 도우미를 가지고있을 때 – casablanca

+1

$ _SESSION을 직접 사용하는 것은 좋지 않습니다. 자산을 밀어 넣기 위해 PHP를 사용하면 브라우저의 캐시 시간이 1 백만 배나 느려지거나 사용하지 못하게됩니다. – dogmatic69

관련 문제