You cannot see this page without javascript.

조회 수 861 추천 수 0 댓글 0

프로그래밍을 하다보면 자바스크립트에서 얻은 결과 값을 PHP 의 변수값으로 사용하고 싶을때가 있다.

그 방법을 알고자 인터넷 검색을 하면, 자바스크립트는 클라이언트쪽 언어이고, PHP는 서버쪽 언어라서 안된다는 답변을 볼수 있다.

 

전혀 방법이 없는 것은 아니다. 약간의 편법을 사용해야 한다.

즉, 자바스크립트의 변수 값을 제이쿼리 post() 함수등을 이용해서 서버측 세션에 저장한후, PHP에서 세션 값을 가져오면 된다.

따라서 PHP 변수로 사용하기 전에 먼저 자바스크립트를 선행해 줘야 한다. 

 

아래는 간단한 사용예제이다.

클라이언트의 화면 해상도를 구해서 PHP로 전달하는 과정이다.

 

해상도 크기를 ajax 또는 post 함수를 이용해 myscreen.php 로 전달한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[POST 예제]
<script type="text/javascript">
//<![CDATA[
jQuery.post('./myscreen.php', { width: screen.width, height: screen.height }, function( callback ) {
    // PHP 배열을 json_encode 한 값중에서 status 값 출력
    console.log( '리턴 값: '+ callback.status );
}, "json");
//]]>
</script>
 
[AJAX 예제]
<script type="text/javascript">
//<![CDATA[
jQuery.ajax({
    type: "POST",
    dataType: "json",
    url: "./myscreen.php",
    data: { width: screen.width, height: screen.height },
    success: function(callback) {
        // PHP 배열을 json_encode 한 값중에서 status 값 출력
        console.log( '리턴 값: '+ callback.status );
    }
});
//]]>
</script>

 

myscreen.php 내용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
session_start();
if(isset($_POST['width']) AND isset($_POST['height'])) {
    $_SESSION['screen_width'] = $_POST['width'];
    $_SESSION['screen_height'] = $_POST['height'];
    $status = 'Y';
}
else
{
    $status = 'N';
}
$result = array('width' => $_POST['width'], 'height' => $_POST['height'], 'status' => $status);
//쿠키 저장 - TEST
setcookie('TEST',json_encode($result),time()+(60*60*24*30),'/');
setcookie('screen_width',$_POST['width'],time()+(60*60*24*30),'/');
echo json_encode($result); // JSON 인코드
?>

 

XE 에서 사용하는 방법
1
2
3
4
5
6
7
8
9
10
{@
    // XE 일반 페이지에서 $_SESSION 을 사용하려면 아래 코드를 선행해줘야 한다.
    eval(base64_decode('JF9fQ29udGV4dC0+X1NFU1NJT04gPSAmJF9TRVNTSU9OOw=='));
    // 프로그램 수행에서 속도차이로 세션값을 로드하지 못하는 경우, 즉 세션 값이 없는 경우, 화면을 리플레쉬를 한번 해주어야 한다.
    if(!$_SESSION['screen_width']) eval(base64_decode('ZWNobyAiPHNjcmlwdD5sb2NhdGlvbi5yZWxvYWQoKTs8L3NjcmlwdD4iOw==')); // <script>location.reload();</script>
    // 만약 쿠키로 저장한 경우 - 사실 세션보다는 쿠키를 권하고 싶다.
    if(!$_COOKIE['screen_width']) eval(base64_decode('ZWNobyAiPHNjcmlwdD5sb2NhdGlvbi5yZWxvYWQoKTs8L3NjcmlwdD4iOw=='));
    // 세션에 저장된 값을 레이아웃 변수에 입력.
    $layout_info->screen_width = $_SESSION['screen_width'];
}

 

 

json_encode 로 저장된 쿠키 배열값을 자바스크립트에서 출력 방법
1
2
3
4
5
6
7
8
9
10
11
12
13
<script type="text/javascript">
//<![CDATA[
var myCookie = JSON.parse(jQuery.cookie("TEST"));
 
jQuery(document).ready(function($) {
    if(!myCookie) location.reload(); // 저장된 쿠키값이 없으면 새로고침
});
 
jQuery(window).load(function () {
    console.log('쿠키값: '+ myCookie.status); // PHP에서 넘겨받은 status 값 출력
});
//]]>
</script>

 

모바일 기기등의 방문자의 다양한 해상도 크기를 자바스크립트 구문을 이용해서 값을 추출해서 세션값에 저장한후, 해당 세션을 PHP로 된 웹 구문인 레이아웃 넓이에 입력해서 사용하는 방식이다.

Who's DragonHaptic

profile