묻고답하기
송동우님~
2012.01.02 19:59
외부 페이지에서 회원 정보를 보여주게 하려고 합니다.
일단 이렇게 만들어 보았습니다.
<?
$uid = $_GET['user_id'];
$conn=mysql_connect("localhost","아이디","비밀번호");
mysql_select_db("DB명",$conn);
$query="select * from xe_member where user_id='$uid'";
$result=mysql_query($query) or die("$query".mysql_error());
while($row=mysql_fetch_array($result))
{
echo $row[user_id];이하 생략
}
?>
한데 이러면 문제가, http://주소/test.php?user_id=아이디 이런식으로 접속하는 것이니
다른 회원의 아이디를 치면 정보가 다 보이게 됩니다.
게다가 페이지 수정 > 내용 직접 추가에서 <a href="http://주소/test.php?user_id=$logged_info->user_id">보러가기</a>
를 해도 정상 작동하지 않구요.
그래서 묻고답하기 게시판에서 한참 검색하다가
<?
define('__ZBXE__', true);
require_once('./config/config.inc.php');
$oContext = &Context::getInstance();
$oContext->init();
$logged_info = Context::get('logged_info');
?>
이걸 최상단에 넣으면 외부페이지에서도 회원정보를 가져올 수 있다는 것을 알게 되었습니다.
그래서
<?
define('__ZBXE__', true);
require_once('./config/config.inc.php');
$oContext = &Context::getInstance();
$oContext->init();
$logged_info = Context::get('logged_info');
$id = $logged_info->user_id;
echo $id;
?>
를 해봤는데 아무것도 뜨지 않습니다. echo $id 아래에 echo "테스트"; 를 넣으면 테스트만 정상 출력되더군요.
제가 뭘 잘못한 걸까요?
해당 php파일의 경로는 public_html/test.php이고
config.inc.php 파일의 경로는 public_html/config/config.inc.php입니다.
답변 해 주시면 정말 감사하겠습니다.
* 추가로 궁금한 것이 있는데
<html>
<head>
</head>
<body>
<!--@foreach($logged_info->group_list as $key => $val)-->
<h2>$val</h2>
<!--@if($val=="Manager")-->
관리자일 경우
<!--@end-->
<!--@end-->
</body>
</html>
이렇게 작성했는데 $val의 값이 아니라 그냥 $val이라는 텍스트가 뜹니다.
또 "관리자일 경우" 라는 메시지가 모든 그룹과 로그인하지 않은 사용자에게도 뜹니다.
무엇이 잘못된 것인가요?
오늘 처음 건드려 보는 거라 모르는게 참 많네요. 귀찮게 해드려 죄송할 따름입니다 ㅠㅠ
댓글 1
-
송동우
2012.01.03 04:17
-
뮤
2012.01.04 00:38
친절한 답변 감사합니다. 말씀 듣고 그냥 위젯 수정해서 하니 잘 됩니다 ㅎ 페이지 만들어서 하는것도 잘 됐구요~
1.
config.inc.php 파일의 경로가 제대로 잡혀있다면
출력이 되어야 정상입니다.
echo "<pre>";
print_r($logged_info);
echo "</pre>";
xe에 로그인 되어 있는 상태에서
이걸 찍어서 결과가 제대로 나오나 한 번 보세요
2.
사용하시는 test.php파일은 모듈화하지 않은, 즉 xe와는 전혀 상관이 없는 파일입니다.
보통 xe에서 말하는 외부파일은 관리자페이지의 외부페이지 메뉴에서 해당파일을 연결한 페이지(외부페이지)를 말합니다.
이렇게 생성(연결)된 외부페이지는 xe파일처럼 해당정보를 이용할 수 있고, 템플릿언어를 사용할 수 있습니다.
하지만
전혀 상관없는 외부파일은 템플릿언어를 사용해도 당연히 안되겠죠
html 파일에 php를 아무리 작성해 봐야 작동하지 않는 것처럼........
<!--@ foreach($logged_info->group_list as $key => $val)-->
이런 것은 템플릿 언어입니다.
그리고 출력을 할 때도 $val 이것이 아니라 {$val} 이렇게 되어야 하지만,
xe와 연결이 된 외부페이지에서 가능한 것입니다.
템플릿 언어를 사용하고자 한다면 관리페이지에서 외부페이지로 연결을 하고
아니면 php언어로 해야 합니다.