묻고답하기
외부페이지에서의 세션 변수
2011.09.06 17:10
안녕하세요?
a.php를 외부페이지 a로 만들어 사용하는데,
a.php에 세션 변수가 있습니다.
b.php에 세션변수를 출력하는 부분이 있는데,
a.php를 열고 b.php를 열면 출력이 잘 됩니다.
그런데,
1) 외부페이지 a를 열고, b.php를 열면 출력이 안됩니다.
그런데, b.php를 외부페이지 b로 만들어
2) a를 열고, b를 열면 출력이 잘 됩니다.
왜 이런지 알 수 없을까요?
저는 꼭
1)을 사용하고 싶습니다.
xe에서 외부페이지를 여는 것과 그냥 php를 여는 것은 서로 세션이 다른 건가요?
사실은 image를 세션 변수에 넣고
그걸 불러와서 그림 그리고 맵 데이타도 추가하는 부분이 있는데,
외부페이지로 만들어 사용하니
이게 안되어서
그림을 두 번 그립니다.
한번은 그림을 그리고,
한번은 맵을 위해서 그립니다.
<!--StartFragment--><img src="getchart.php?<?php echo $chart1URL?>" border="0" usemap="#map1">
<map name="map1">
<?php echo $imageMap?>
</map>
위에 처럼 그림과 map을 그리고 그림은 세션변수에 넣고
$chart1URL 안에 image 세션변수가 있고 그냥 그걸 불러서 한번에 그리는데...
<img src="loss_trend.php?months=<?php echo $selectedMonth?>&grade=<?php echo $selectedGrade?>&<?php echo $chart1URL?>" border="0" usemap="#map1">
<map name="map1">
<?php echo $imageMap?>
</map>
여기는 loss_trend.php로 그림을 그리고, 위의 내용 앞에 또 그림을 그리는 부분이 있습니다. map을 위해서
외부페이지에서 세션변수가 어떻게 동작하나요?
세션이 도대체 뭔가요?
아시는 분이 있으면 꼭 알려주시면 감사하겠습니다.
감사합니다.
댓글 3
-
송동우
2011.09.06 17:50
-
수펊랭컬
2011.09.07 09:05
지난번 외부페이지에 매개변수를 전달하는 방법을 알려주셔서 너무 감사했습니다. -
수펊랭컬
2011.09.07 12:37
php 디버그깅은 어떤 걸로 하나요? 지금 저는 미리내에 그냥 ftp로 php화일 올리는 식으로 작업합니다. 디버깅하는 방법이 있나요? 아니면 pc에 똑같은 환경을 만들어 놓고 디버깅하고 올리나요? 디버깅 툴이 있으면 좀 알려주세요. 디버거가 없으니 정말 너무 힘듭니다. -
수펊랭컬
2011.09.07 09:11
일단 간단한 예를 올려볼께요.
mypage.php
<?php
// this starts the session
session_start();
// this sets variables in the session
$_SESSION['color']='red';
$_SESSION['size']='small';
$_SESSION['shape']='round';
print "Done";
?>
와
mypage2.php의 소스입니다.
<?php
// this starts the session
session_start();
// echo variable from the session, we set this on our other page
echo "Our color value is ".$_SESSION['color'] . "</br>";
echo "Our size value is ".$_SESSION['size']. "</br>";
echo "Our shape value is ".$_SESSION['shape']. "</br>";
?>
이럴때,
http://memc.kr/mir/mypage <- http://memc.kr/mir/mypage.php 의 외부페이지
http://memc.kr/mir/mypage2 <- http://memc.kr/mir/mypage2.php 의 외부페이지
입니다.
여기서 http://memc.kr/mir/mypage 클릭하고 http://memc.kr/mir/mypage2 클릭하면 값이 나옵니다.
그런데, http://memc.kr/mir/mypage 클릭하고 http://memc.kr/mir/mypage2.php 클릭하면 값이 안 나옵니다.
그런데, http://memc.kr/mir/mypage.php 클릭하고 http://memc.kr/mir/mypage2.php 클릭하면 값이 나옵니다.
위의 순서를 잘 지켜야 합니다. 아니면 그전에 기록된 세션변수 값이 표시됩니다.(이럴 경우, 브라우저를 모두 닫고 다시하면 됩니다.)
위의 링크를 열때, 새창에서 열기가 좀 편합니다.
여기서 외부페이지와 그냥 php는 같은 세션이 아닌가요?
외부페이지 끼리 세션을 공유하고 그냥 php끼리 세션을 공유하는 것 같습니다.
제가 원하는 것은 서로 공유할 수 있어야 하는데요.
외부페이지 내에서 다른 php를 불러서 써야 하는 부분이 있어서요.... -
송동우
2011.09.07 13:12
xe에서 설정한 외부페이지에서 개인적으로 만든 세션값을
xe와 상관없은 php페이지(예:test.php)에서 값을 사용하려 한다면
test.php 파일 속 상단에
<?php
define('__ZBXE__', true);
require_once('./config/config.inc.php'); //경로 제대로 잡아주고
$oContext = &Context::getInstance();
$oContext->init();
/*
** 이걸 넣어주고 위의 예문에서 출력을 예로 표시한다면
*/
echo "Our color value is ".$_SESSION[color]; //이렇게 출력을 시켜보세요
?> -
수펊랭컬
2011.09.07 23:07
말씀대로 하니깐 됩니다. 감사합니다. 아래도 좀 봐주세요. 두번 그려서 하면 되지만 끝까지 한번 해결해 보고 싶습니다.
{변수} 이런 형식으로 해 보세요
예를 들어 <a href="b.php?test=<?=변수?>">클릭</a>
이렇게 해서 웹페이지에서 클릭에 마우스를 올리면 test변수에 값이 안나옵니다.
디버깅 해보면 당연히 값이 안넘어 갑니다.
하지만
<a href="b.php?test={변수}">클릭</a>
이런식으로 하면 값이 넘어갑니다.