2009-02-10 4 views

답변

9

는 개인적으로 클라이언트 ISN '에 정보를 전달하는 것과 같은 중요한 몇 가지 기본적인 세션 내부 설정, 아무것도 임무로 구성된 자바 스크립트 객체를 전달하는 PHP 파일을 사용하여 지나치게 안전하지는 않지만, 나는 그것이 당신이 찾고있는 것과 같은 원칙을 따를 것이라고 믿습니다.

마찬가지로 모든 권한이 서버 측에서 계속 수행되지만 클라이언트를 로그인 한 후에도이를 사용하여 특정 요소를 표시합니다. 내 세션 처리기가 PHP 파일에 ok를 제공하면 PHP heredoc 문자열을 사용하여 JavaScript 객체를 출력합니다. 그렇지 않으면 아무 것도 출력하지 않습니다. 이 객체의 속성을 사용하여 비교할 수도 있고 PHP 파일의 설정을 기반으로 특정 페이지의 렌더링 방법에 대한 JavaScript 만 출력 할 수도 있습니다.

HTML :

<script src="common/javascript/php_feeder.php" type="text/javascript"></script> 

PHP :

//my session handler authorisation check has been removed 
//although you could place your own up here. 

//assuming session was authorised 
//set content type header 
header("content-type: application/x-javascript"); 

$js_object = <<<EOT 
var my_object = { 
    my_attr: '{$my_attr}', 
    my_attr2: '{$my_arrt2}', 
    etc: '{$etc}' 
} 
EOT; 

print($js_object); 
+0

내 의견으로는 주어진 문제에 대한 최상의 솔루션입니다. –

2

사용자 유형에 따라 필요한 두 개의 Java 스크립트 파일을 만들고 필요한 파일을 포함 할 수 있습니다.

의사 코드

If user_type is One 
    <Script src='one.js' type='javascript'></script> 
else 
    <Script src='other.js' type='javascript'></script> 
End If 
0

자바 스크립트는 eval 기능을 가지고, 그래서 나는 (내가 그것을 시도하지 않은)이 변수 문자열로 그것을 쓰기 (및 그에 eval를 호출하여 자바 스크립트를 생성 할 수 있다고 생각 문자열 변수).

+0

가능한 한,하지만 evals는 사용하기가 매우 불안합니다. –

0

좀 더 자세히 설명하면 도움이 될만한 답을 얻을 수 있습니다. 따라서 if 문 안에서 선언 된 함수를 사용하여 다른 사용자에게 분명히 다양한 경험을 제공 할 수 있습니다.

매우 기본 예제 :

<script> 
function do_something(userType) 
{ 
if (userType == 'A') 
{ 
// everything you need to do for userType A 
} 
if (userType == 'B') 
{ 
// everything you need to do for userType B 
} 
} 
</script> 
+0

나는 클라이언트 측 자바 스크립트를 사용하는 대신 사용자 유형을 확인하는 것이 서버 측 문제 여야한다고 말하고 싶다. (분명한 취약점이 있음) –

+0

그가 데이터를 수집하는 방법과 그가 서버 측 언어로 유능한 지 여부에 전적으로 달려 있습니다. 그는 그가 알고있는 언어 (자바 스크립트, 보이는 것)를 쉽게 사용할 수 있으며 JS 변수에 사용자 유형을 저장합니다. 예,이 변수를 서버 측에서 얻는 것이 유익합니다. –

+0

이것은 매우 비효율적이며 안전하지 못한 솔루션입니다. 또한이 함수를 얼마나 정확하게 호출 할 예정입니까? –

관련 문제