노프레임, 최신글추출, 외부로그인, 변수정리 1차분 올립니다.(linux에서만 테스트함) 정보
일반 노프레임, 최신글추출, 외부로그인, 변수정리 1차분 올립니다.(linux에서만 테스트함)
본문
먼저 2.3X버젼을 이용했습니다.
소스수정 본부분만 올릴까 합니다. 그리고 추가로 홈페이지 소스전체를 다시 업로드하겠습니다.
index.html와 gnu2(그누보드)설치위치과 같던지 다르던지 상관없는 조건에 만족하도록 수정하였습니다.
대략적인 설명을 일단 올리겠습니다. 변수선언등을 통일했으면 하는 바램으로....
먼저 index.html상에서의 외부로그인, 최신글추출을 위한선언(위치와는 상관이 없습니다.)
//###############################################
//## index.html
//###############################################
<?
$cfg[url] = "http://61.40.183.198/~ccc/gnu2"; // 웹상의 절대주소 그누보드 설치디렉토리
$cfg[reldir] = "/home/ccc/public_html/gnu2"; // cwd명령시 나오는 실제 그누보드 설치디렉토리
// 비슷한것 같은데 2개를 선언한이유는
// 그림파일등 변수가 넘어가지 않는경우는
// $cfg[url]변수를 사용합니다.
// $cfg[reldir] 이건 변수를 넘길때 위치와 상관없이
// 그디렉토리파일을 찾기때문에 선언을 했습니다.
require_once "$cfg[reldir]/lib.inc.php";
require_once "$cfg[reldir]/userlib.inc.php"; // userlib.inc.php는 최신글,최신그림등이 들어있으며
// 그누드와 같이 넣었습니다.
?>
<html>
<head>
<title>■□■ test ■□■</title>
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
</head>
<link rel='stylesheet' href='<?=$cfg[url]?>/style.css' type='text/css'>
<body bgcolor=#ffffff leftmargin=0 topmargin=0 marginwidth=0 marginheight=0 >
<table width=800 border=0 cellpadding=0 cellspacing=0 border=0>
<tr height=27>
<td> <? include "menu.html"; ?> </td>
</tr>
</table>
<table width=800 border=0 cellpadding=0 cellspacing=0 border=0>
<tr>
<td width=167 height=100% background='images/menu_bg.gif' valign=top>
<table border=0 height=100% cellpadding=0 cellspacing=0 border=0>
<!-- 로그인부분 -->
<tr valign=top>
<td width=167 valign=top>
<? include "$cfg[reldir]/outlogin.php"; ?> // 외부로그인도 그누보드폴더안에 넣었습니다.
</td>
</tr>
<!-- 로그인부분 -->
<tr valign=top>
<td height=1 background='images/menu_01.gif'></td>
</tr>
<!-- 서브메뉴부분 -->
<tr valign=top>
<td height='' align=center>
<?
if(is_file("menu/$left.html")) {include ("menu/$left.html");}
else {include ("menu/left.html");}
?>
</td>
</tr>
<!-- 서브메뉴부분 -->
<tr>
<td height=1 background='images/menu_01.gif'></td>
</tr>
</table>
</td>
<td width=633 valign=top align=center>
<table border=0 cellpadding=0 cellspacing=0 border=0>
<!-- 메인부분 -->
<tr>
<td align=center>
<table border=1 width=633 cellpadding=0 cellspacing=0 border=0>
<tr><td align=center>
<!-- 메인부분 -->
<?
if(is_file("main/$main.html")) {include ("menu/$main.html");}
else {include ("main/main.html");}
?>
</td></tr>
</table>
</td>
</tr>
<!-- 메인부분 -->
</table>
</td>
</tr>
</table>
</body>
</html>
여기서
$cfg[url] = "http://61.40.183.198/~ccc/gnu2";
$cfg[reldir] = "/home/ccc/public_html/gnu2";는 본의 아니게 한번으로 끝낼려고 해보았지만 소스구조상
config.in.php, lib.inc.php에서 또다시 선언될수 밖에 없네요!
이유는 간단합니다. lib.inc.php에서는 다른 소스를 최대한 손대지 않는 상태에서 만지다 보니 어쩔수 없이 한번선언을
했고 config.inc.php에서는 만약을 위해서 선언을 해줬습니다. 간단하게 config.inc.php선언을 하고 다른곳에서는 include해서 변수를 사용하면 되겠지만 아쉽게도 config.inc.php를 불러오는데 또한 $cfg[reldir]이 필요하기때문에 구조를 뒤바꾸지 않는이상은 어쩔수 없이 선언을 할수밖에 없는 결과가 나오네요!
그럼 수정된 소스를 보겠습니다.
//###############################################
//## lib.inc.php
//###############################################
<?
// 검색 친화적인 URL ( ? = 을 사용하지 않는다)
$path = explode("/", $_SERVER[PATH_INFO]);
for ($idx_k=1; $idx_k<count($path); $idx_k+=2) {
// 동적변수 할당
$var = $path[$idx_k];
$$var = $path[$idx_k+1];
}
@extract($HTTP_POST_VARS);
@extract($HTTP_GET_VARS);
// 상대 경로
// admin 디렉토리 등에서 include 시 같은 경로를 유지하기 위한 방법
if (!$reldir) {
$reldir = "/home/ccc/public_html/gnu2"; // 이부분만 수정햇습니다. 다른곳은 한곳도 만진곳 없습니다.
}
// 자주 사용하는 값
$today = date("Y-m-d", time());
$now = date("Y-m-d H:i:s", time());
require_once "$reldir/config.inc.php";
//여기서 config.inc.php에서 다시 선언되기때문에 require_once "$reldir/config.inc.php"이걸 앞으로배면 어떨까?
앞으로 붙이면 문제잃으킵니다.왜냐면 $reldir자체가 선언이 안된상태기때문에....*^^*
그럼 index.html에서 선언해줬으니깐 안해주면 어떨까? 그럼 index.html아닌부분에서 변수선언이 안되므로 버그를 잃으킵니다. (*^^* 제 머리로는 그렇게 밖에 결론이 안나네요*^^* 소스를 마니 바꾸기전에는...)
마지막으로 config.inc.php를 보겠습니다. 다른건 다 같고
아래만 추가시켰습니다.
//###############################################
//## config.inc.php
//###############################################
/*
** 추가
*/
$cfg[url] = "http://61.40.183.198/~ccc/ccc"; //그누보드설치 절대경로를 설정한다.
$cfg[reldir] = "/home/ccc/public_html/ccc"; //그누보드설치 cwd경로를 설정한다.
$cfg[outlogin_skin] = "login_skin"; //외부로그인 폴더를 설정한다.
$cfg[outlogin_img] = "$cfg[url]/skin/$cfg[outlogin_skin]/images"
이렇게 4개를 추가했는데 2개는 사실 필요없습니다.
그리고 밑에 외부로그인용인데 변수선언을 다 모으는 의미에서 이곳에 넣었습니다.
(outlog.php에 넣어도 괜찮을듯합니다.)
어떤분이 외부로그인스킨도 고를수 있도록하면 좋케다고 하셔서리....
다음은 outlogin.php소스전체입니다.
최소사항만 넣었습니다.
<?
//####################################################
//## 외부로그인
//## gnu 2.32베타용
//####################################################
require_once "$cfg[reldir]/lib.inc.php";
$mb_id = $member[mb_id]; // 회원 아이디
$mb_name = $member[mb_name]; // 회원 이름
$mb_point = number_format($member[mb_point]); // 회원 포인트
$mb_level = $member[mb_level]; // 회원레벨
if ($member[mb_id]) { // 로그인 중이라면
require_once "$cfg[reldir]/skin/$cfg[outlogin_skin]/logout.skin.php";
} else { // 로그아웃 중이라면
require_once "$cfg[reldir]/skin/$cfg[outlogin_skin]/login.skin.php";
}
?>
//####################################################
//## login.skin.php
//## gnu 2.32베타용
//####################################################
<table width=167 height=80 border=0 cellpadding=0 cellspacing=0 background='<?=$cfg[outlogin_img]?>/login_bg.gif'>
<form name=outsideloginform method=post action='<?=$cfg[url]?>/mblogincheck.php' onsubmit='return outsideloginformcheck(this)' autocomplete='off'>
<tr>
<td width=117>
<table border=0 cellpadding=0 cellspacing=0>
<tr height=26>
<td valign=absmiddle>
<img src='<?=$cfg[outlogin_img]?>/id.gif'>
<input type=text name=mb_id class=input size=10 maxlength=20 required itemname="아이디">
</td>
</tr>
<tr height=26>
<td valign=absmiddle>
<img src='<?=$cfg[outlogin_img]?>/pw.gif'>
<input type=password name=mb_passwd class=input size=10 maxlength=20 required itemname="암호">
</td>
</tr>
<tr height=27>
<td align=center>
<a href='<?=$cfg[url]?>/mbform.php' target='_black'><img src='<?=$cfg[outlogin_img]?>/join.gif' border=0></a>
<a href='<?=$cfg[url]?>/mbpasswdforget.php' target='_black'><img src='<?=$cfg[outlogin_img]?>/spw.gif' border=0></a>
</td>
</tr>
</table>
</td>
<td width=50 align=center>
<table border=0 cellpadding=0 cellspacing=0>
<tr height=18>
<td align=center>
<img src='<?=$cfg[outlogin_img]?>/auto.gif'><br>
</td>
</tr>
<tr height=18>
<td align=center>
<img src='<?=$cfg[outlogin_img]?>/check.gif'><br>
</td>
</tr>
<tr height=18>
<td align=center>
<input name='outsideloginformcheck' type=image src='<?=$cfg[outlogin_img]?>/in.gif' border=0 align=absmiddle><br>
</td>
</tr>
</table>
</td>
</tr>
</form>
</table>
<script language='JavaScript'>
function mbformopen(bo_table)
{
window.open('<?=$cfg[url]?>/mbform.php', '회원가입', 'left=10,top=10,width=550,height=600,scrollbars=yes');
}
</script>
<script language='javascript'>
function outsideloginformcheck(f) {
if (f.mb_id.value == '') {
alert('회원아이디를 입력하세요.');
f.mb_id.focus();
return false;
} else if (f.mb_passwd.value == '') {
alert('암호를 입력하세요.');
f.mb_passwd.focus();
return false;
}
return true;
}
</script>
logout.skin.php는 넘어가겠습니다.
최신글 추출하는 userlib.inc.php를 보겠습니다. 최신글만 올립니다.
<?
// 새글 추출
function newlist($skins, $bo_table, $subject, $rows, $subjectlen='')
{
global $cfg; // $cfg전역변수선언으로 함수이외에 곳에서도 $cfg변수값모두 적용됨
$cfg[board_table_prefix] = "gb_write_"; // 게시판 테이블의 접두사
$skin_dir = "$cfg[reldir]/skin/$skins"; // 최신글스킨디렉토리(include 또는 requre_onle 전용)
$skin_img = "$cfg[url]/skin/$skins/images"; // 최신글스킨이미지디렉토리
$file_dir = "$cfg[url]/data/file"; // 최신글 이미지파일디렉토리
$sql = " select * from $cfg[table_board] where bo_table = '$bo_table' ";
$bd = sql_fetch_array($sql);
if ($subjectlen == '') $subjectlen = $bd[bo_subject_len];
include "$skin_dir/newlist_head.skin.php";
$table = "{$cfg[board_table_prefix]}{$bo_table}";
$result = sql_query_error(" select * from $table where wr_comment = 0 order by wr_id desc limit {$rows} ");
for ($i = 0; $row = mysql_fetch_array($result); $i++) {
$icon_file = "";
if ($row[wr_file1] || $row[wr_file2])
$icon_file = "<img src='$skin_img/icon_file.gif' align=absmiddle>";
$icon_link = "";
if ($row[wr_link1] || $row[wr_link2])
$icon_link = "<img src='$skin_img/icon_link.gif' align=absmiddle>";
$a_list_link = "<a href='$cfg[url]/gbview.php?$qstr&page=$page&wr_id=$data[wr_id]' class=s_a>";
$icon_new = "";
if ($row[wr_datetime] >= date("Y-m-d H:i:s", time() - $bd[bo_new] * 3600))
$icon_new = "<img src='$skin_img/icon_new.gif' align=absmiddle>";
$icon_hot = "";
if ($row[wr_hit] >= $bd[bo_hot])
$icon_hot = "<img src='$skin_img/icon_hot.gif' align=absmiddle>";
$icon_battle = "";
if ($row[wr_commentcnt] >= $bd[bo_battle])
$icon_battle = "<img src='$skin_img/icon_battle.gif' align=absmiddle>";
$icon_secret = "";
if ($row[wr_secret])
$icon_secret = "<img src='$skin_img/icon_secret.gif' align=absmiddle>";
$wr_commentcnt = ($row[wr_commentcnt] > 0) ? "<font color=gray size=1>[$row[wr_commentcnt]]</font>" : null;
$wr_subject = get_text(cut_str($row[wr_subject], $subjectlen, '…'));
$wr_content = get_text(cut_str($row[wr_content], 400, '....[계속]'));
if ($row[wr_secret]) $wr_content = "";
$wr_id = $row[wr_id];
$wr_name = $row[wr_name];
$wr_datetime = $row[wr_datetime];
$wr_datetime = substr("{$wr_datetime}",0,10);
include "$skin_dir/newlist_main.skin.php";
}
mysql_free_result($result);
}
?>
//크게 바뀐건 없고 변수선언을 위로 뺐고...변수명을 조금수정보았습니다.(표준화를 위해서...)
마지막으로 newlist_head.skin.php를 보겠습니다.
<?
/*
최신글추출 스킨 사용가능 변수 ver 2.32베타용
<?=$skin_dir?> 스킨디렉토리 gnu2/skin/스킨디렉토리명 까지
<?=$skin_img?> 스킨디렉토리이미지 gnu2/skin/스킨디렉토리명/images 까지
<?=$file_dir?> 그림파일디렉토리 gnu2/data/file 까지선언
<?=$cfg[url]?> 절대주소 http://xxx.xxx.xxx.xxx/gnu2 까지
<?=$cfg[reldir]?> cwd주소 /home/계정명/public_html/gnu2 까지
<?=$bo_table?> 게시판명
<?=$wr_commentcnt?> 커맨트갯수 원본 $row[wr_commentcnt]
<?=$wr_subject?> 제목 원본 $row[wr_subject]
<?=$wr_content?> 내용 원본 $row[wr_content]
<?=$wr_id?> 글번호 원본 $row[wr_id]
<?=$wr_name?> 작성자이름 원본 $row[wr_name]
<?=$wr_datetime?> 작성시간 원본 $row[wr_datetime]
기본적으로 최신게시판에 사용되는 변수는 다 선언했습니다.
기타 변수 추가는 userlib.inc.php에서 변수명 = $row[wr_변수명];
하고 선언해주면됩니다.
*/
?>
<!-- 최근글 목록이 나오는 부분 -->
<table border=0 cellpadding=0 cellspacing=0 width=100% align=center>
<tr>
<td width=75% onMouseOver=this.style.backgroundColor='FFFAF3' onMouseOut=this.style.backgroundColor='' style='font-size:9pt;' title='<?=$wr_content?>'>
<img src='<?=$skin_img?>/arrow.gif' border=0>
<a href='<?=$cfg[url]?>/gnuboard.php?bo_table=<?=$bo_table?>&wr_id=<?=$wr_id?>'><?=$wr_subject?></a><?=$wr_commentcnt?><?=$icon_new?> <?=$icon_hot?> <?=$icon_battle?> <?=$icon_secret?>
<td width=100 align=right style='font-size:9pt;'><?=$wr_datetime?></td>
</td>
</tr>
</table>
대략적인 변수선언과 정리한걸 올린겁니다. 전체소스가 다되면 샘플홈페이지 통채로 올리겠습니다.
외부로그인, 최신글추출, index.html파일의 위치 루트, 또는 그누보드와 함께 있는것 모두 테스트상 아무문제 없이
작동합니다. 아쉽지만 windows2000 IIS서버에서는 제가 서버 계정이 없는 관계로 테스트를 못해보았습니다.
한번들 보시고 변수명 함수명통합작업했으면합니다. 운영자님글보니 정식버젼되면 손되실것 같은데...그젼에 기본틀을 마려하는것도 좋으리라고 생각됩니다. *^^*
소스수정 본부분만 올릴까 합니다. 그리고 추가로 홈페이지 소스전체를 다시 업로드하겠습니다.
index.html와 gnu2(그누보드)설치위치과 같던지 다르던지 상관없는 조건에 만족하도록 수정하였습니다.
대략적인 설명을 일단 올리겠습니다. 변수선언등을 통일했으면 하는 바램으로....
먼저 index.html상에서의 외부로그인, 최신글추출을 위한선언(위치와는 상관이 없습니다.)
//###############################################
//## index.html
//###############################################
<?
$cfg[url] = "http://61.40.183.198/~ccc/gnu2"; // 웹상의 절대주소 그누보드 설치디렉토리
$cfg[reldir] = "/home/ccc/public_html/gnu2"; // cwd명령시 나오는 실제 그누보드 설치디렉토리
// 비슷한것 같은데 2개를 선언한이유는
// 그림파일등 변수가 넘어가지 않는경우는
// $cfg[url]변수를 사용합니다.
// $cfg[reldir] 이건 변수를 넘길때 위치와 상관없이
// 그디렉토리파일을 찾기때문에 선언을 했습니다.
require_once "$cfg[reldir]/lib.inc.php";
require_once "$cfg[reldir]/userlib.inc.php"; // userlib.inc.php는 최신글,최신그림등이 들어있으며
// 그누드와 같이 넣었습니다.
?>
<html>
<head>
<title>■□■ test ■□■</title>
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
</head>
<link rel='stylesheet' href='<?=$cfg[url]?>/style.css' type='text/css'>
<body bgcolor=#ffffff leftmargin=0 topmargin=0 marginwidth=0 marginheight=0 >
<table width=800 border=0 cellpadding=0 cellspacing=0 border=0>
<tr height=27>
<td> <? include "menu.html"; ?> </td>
</tr>
</table>
<table width=800 border=0 cellpadding=0 cellspacing=0 border=0>
<tr>
<td width=167 height=100% background='images/menu_bg.gif' valign=top>
<table border=0 height=100% cellpadding=0 cellspacing=0 border=0>
<!-- 로그인부분 -->
<tr valign=top>
<td width=167 valign=top>
<? include "$cfg[reldir]/outlogin.php"; ?> // 외부로그인도 그누보드폴더안에 넣었습니다.
</td>
</tr>
<!-- 로그인부분 -->
<tr valign=top>
<td height=1 background='images/menu_01.gif'></td>
</tr>
<!-- 서브메뉴부분 -->
<tr valign=top>
<td height='' align=center>
<?
if(is_file("menu/$left.html")) {include ("menu/$left.html");}
else {include ("menu/left.html");}
?>
</td>
</tr>
<!-- 서브메뉴부분 -->
<tr>
<td height=1 background='images/menu_01.gif'></td>
</tr>
</table>
</td>
<td width=633 valign=top align=center>
<table border=0 cellpadding=0 cellspacing=0 border=0>
<!-- 메인부분 -->
<tr>
<td align=center>
<table border=1 width=633 cellpadding=0 cellspacing=0 border=0>
<tr><td align=center>
<!-- 메인부분 -->
<?
if(is_file("main/$main.html")) {include ("menu/$main.html");}
else {include ("main/main.html");}
?>
</td></tr>
</table>
</td>
</tr>
<!-- 메인부분 -->
</table>
</td>
</tr>
</table>
</body>
</html>
여기서
$cfg[url] = "http://61.40.183.198/~ccc/gnu2";
$cfg[reldir] = "/home/ccc/public_html/gnu2";는 본의 아니게 한번으로 끝낼려고 해보았지만 소스구조상
config.in.php, lib.inc.php에서 또다시 선언될수 밖에 없네요!
이유는 간단합니다. lib.inc.php에서는 다른 소스를 최대한 손대지 않는 상태에서 만지다 보니 어쩔수 없이 한번선언을
했고 config.inc.php에서는 만약을 위해서 선언을 해줬습니다. 간단하게 config.inc.php선언을 하고 다른곳에서는 include해서 변수를 사용하면 되겠지만 아쉽게도 config.inc.php를 불러오는데 또한 $cfg[reldir]이 필요하기때문에 구조를 뒤바꾸지 않는이상은 어쩔수 없이 선언을 할수밖에 없는 결과가 나오네요!
그럼 수정된 소스를 보겠습니다.
//###############################################
//## lib.inc.php
//###############################################
<?
// 검색 친화적인 URL ( ? = 을 사용하지 않는다)
$path = explode("/", $_SERVER[PATH_INFO]);
for ($idx_k=1; $idx_k<count($path); $idx_k+=2) {
// 동적변수 할당
$var = $path[$idx_k];
$$var = $path[$idx_k+1];
}
@extract($HTTP_POST_VARS);
@extract($HTTP_GET_VARS);
// 상대 경로
// admin 디렉토리 등에서 include 시 같은 경로를 유지하기 위한 방법
if (!$reldir) {
$reldir = "/home/ccc/public_html/gnu2"; // 이부분만 수정햇습니다. 다른곳은 한곳도 만진곳 없습니다.
}
// 자주 사용하는 값
$today = date("Y-m-d", time());
$now = date("Y-m-d H:i:s", time());
require_once "$reldir/config.inc.php";
//여기서 config.inc.php에서 다시 선언되기때문에 require_once "$reldir/config.inc.php"이걸 앞으로배면 어떨까?
앞으로 붙이면 문제잃으킵니다.왜냐면 $reldir자체가 선언이 안된상태기때문에....*^^*
그럼 index.html에서 선언해줬으니깐 안해주면 어떨까? 그럼 index.html아닌부분에서 변수선언이 안되므로 버그를 잃으킵니다. (*^^* 제 머리로는 그렇게 밖에 결론이 안나네요*^^* 소스를 마니 바꾸기전에는...)
마지막으로 config.inc.php를 보겠습니다. 다른건 다 같고
아래만 추가시켰습니다.
//###############################################
//## config.inc.php
//###############################################
/*
** 추가
*/
$cfg[url] = "http://61.40.183.198/~ccc/ccc"; //그누보드설치 절대경로를 설정한다.
$cfg[reldir] = "/home/ccc/public_html/ccc"; //그누보드설치 cwd경로를 설정한다.
$cfg[outlogin_skin] = "login_skin"; //외부로그인 폴더를 설정한다.
$cfg[outlogin_img] = "$cfg[url]/skin/$cfg[outlogin_skin]/images"
이렇게 4개를 추가했는데 2개는 사실 필요없습니다.
그리고 밑에 외부로그인용인데 변수선언을 다 모으는 의미에서 이곳에 넣었습니다.
(outlog.php에 넣어도 괜찮을듯합니다.)
어떤분이 외부로그인스킨도 고를수 있도록하면 좋케다고 하셔서리....
다음은 outlogin.php소스전체입니다.
최소사항만 넣었습니다.
<?
//####################################################
//## 외부로그인
//## gnu 2.32베타용
//####################################################
require_once "$cfg[reldir]/lib.inc.php";
$mb_id = $member[mb_id]; // 회원 아이디
$mb_name = $member[mb_name]; // 회원 이름
$mb_point = number_format($member[mb_point]); // 회원 포인트
$mb_level = $member[mb_level]; // 회원레벨
if ($member[mb_id]) { // 로그인 중이라면
require_once "$cfg[reldir]/skin/$cfg[outlogin_skin]/logout.skin.php";
} else { // 로그아웃 중이라면
require_once "$cfg[reldir]/skin/$cfg[outlogin_skin]/login.skin.php";
}
?>
//####################################################
//## login.skin.php
//## gnu 2.32베타용
//####################################################
<table width=167 height=80 border=0 cellpadding=0 cellspacing=0 background='<?=$cfg[outlogin_img]?>/login_bg.gif'>
<form name=outsideloginform method=post action='<?=$cfg[url]?>/mblogincheck.php' onsubmit='return outsideloginformcheck(this)' autocomplete='off'>
<tr>
<td width=117>
<table border=0 cellpadding=0 cellspacing=0>
<tr height=26>
<td valign=absmiddle>
<img src='<?=$cfg[outlogin_img]?>/id.gif'>
<input type=text name=mb_id class=input size=10 maxlength=20 required itemname="아이디">
</td>
</tr>
<tr height=26>
<td valign=absmiddle>
<img src='<?=$cfg[outlogin_img]?>/pw.gif'>
<input type=password name=mb_passwd class=input size=10 maxlength=20 required itemname="암호">
</td>
</tr>
<tr height=27>
<td align=center>
<a href='<?=$cfg[url]?>/mbform.php' target='_black'><img src='<?=$cfg[outlogin_img]?>/join.gif' border=0></a>
<a href='<?=$cfg[url]?>/mbpasswdforget.php' target='_black'><img src='<?=$cfg[outlogin_img]?>/spw.gif' border=0></a>
</td>
</tr>
</table>
</td>
<td width=50 align=center>
<table border=0 cellpadding=0 cellspacing=0>
<tr height=18>
<td align=center>
<img src='<?=$cfg[outlogin_img]?>/auto.gif'><br>
</td>
</tr>
<tr height=18>
<td align=center>
<img src='<?=$cfg[outlogin_img]?>/check.gif'><br>
</td>
</tr>
<tr height=18>
<td align=center>
<input name='outsideloginformcheck' type=image src='<?=$cfg[outlogin_img]?>/in.gif' border=0 align=absmiddle><br>
</td>
</tr>
</table>
</td>
</tr>
</form>
</table>
<script language='JavaScript'>
function mbformopen(bo_table)
{
window.open('<?=$cfg[url]?>/mbform.php', '회원가입', 'left=10,top=10,width=550,height=600,scrollbars=yes');
}
</script>
<script language='javascript'>
function outsideloginformcheck(f) {
if (f.mb_id.value == '') {
alert('회원아이디를 입력하세요.');
f.mb_id.focus();
return false;
} else if (f.mb_passwd.value == '') {
alert('암호를 입력하세요.');
f.mb_passwd.focus();
return false;
}
return true;
}
</script>
logout.skin.php는 넘어가겠습니다.
최신글 추출하는 userlib.inc.php를 보겠습니다. 최신글만 올립니다.
<?
// 새글 추출
function newlist($skins, $bo_table, $subject, $rows, $subjectlen='')
{
global $cfg; // $cfg전역변수선언으로 함수이외에 곳에서도 $cfg변수값모두 적용됨
$cfg[board_table_prefix] = "gb_write_"; // 게시판 테이블의 접두사
$skin_dir = "$cfg[reldir]/skin/$skins"; // 최신글스킨디렉토리(include 또는 requre_onle 전용)
$skin_img = "$cfg[url]/skin/$skins/images"; // 최신글스킨이미지디렉토리
$file_dir = "$cfg[url]/data/file"; // 최신글 이미지파일디렉토리
$sql = " select * from $cfg[table_board] where bo_table = '$bo_table' ";
$bd = sql_fetch_array($sql);
if ($subjectlen == '') $subjectlen = $bd[bo_subject_len];
include "$skin_dir/newlist_head.skin.php";
$table = "{$cfg[board_table_prefix]}{$bo_table}";
$result = sql_query_error(" select * from $table where wr_comment = 0 order by wr_id desc limit {$rows} ");
for ($i = 0; $row = mysql_fetch_array($result); $i++) {
$icon_file = "";
if ($row[wr_file1] || $row[wr_file2])
$icon_file = "<img src='$skin_img/icon_file.gif' align=absmiddle>";
$icon_link = "";
if ($row[wr_link1] || $row[wr_link2])
$icon_link = "<img src='$skin_img/icon_link.gif' align=absmiddle>";
$a_list_link = "<a href='$cfg[url]/gbview.php?$qstr&page=$page&wr_id=$data[wr_id]' class=s_a>";
$icon_new = "";
if ($row[wr_datetime] >= date("Y-m-d H:i:s", time() - $bd[bo_new] * 3600))
$icon_new = "<img src='$skin_img/icon_new.gif' align=absmiddle>";
$icon_hot = "";
if ($row[wr_hit] >= $bd[bo_hot])
$icon_hot = "<img src='$skin_img/icon_hot.gif' align=absmiddle>";
$icon_battle = "";
if ($row[wr_commentcnt] >= $bd[bo_battle])
$icon_battle = "<img src='$skin_img/icon_battle.gif' align=absmiddle>";
$icon_secret = "";
if ($row[wr_secret])
$icon_secret = "<img src='$skin_img/icon_secret.gif' align=absmiddle>";
$wr_commentcnt = ($row[wr_commentcnt] > 0) ? "<font color=gray size=1>[$row[wr_commentcnt]]</font>" : null;
$wr_subject = get_text(cut_str($row[wr_subject], $subjectlen, '…'));
$wr_content = get_text(cut_str($row[wr_content], 400, '....[계속]'));
if ($row[wr_secret]) $wr_content = "";
$wr_id = $row[wr_id];
$wr_name = $row[wr_name];
$wr_datetime = $row[wr_datetime];
$wr_datetime = substr("{$wr_datetime}",0,10);
include "$skin_dir/newlist_main.skin.php";
}
mysql_free_result($result);
}
?>
//크게 바뀐건 없고 변수선언을 위로 뺐고...변수명을 조금수정보았습니다.(표준화를 위해서...)
마지막으로 newlist_head.skin.php를 보겠습니다.
<?
/*
최신글추출 스킨 사용가능 변수 ver 2.32베타용
<?=$skin_dir?> 스킨디렉토리 gnu2/skin/스킨디렉토리명 까지
<?=$skin_img?> 스킨디렉토리이미지 gnu2/skin/스킨디렉토리명/images 까지
<?=$file_dir?> 그림파일디렉토리 gnu2/data/file 까지선언
<?=$cfg[url]?> 절대주소 http://xxx.xxx.xxx.xxx/gnu2 까지
<?=$cfg[reldir]?> cwd주소 /home/계정명/public_html/gnu2 까지
<?=$bo_table?> 게시판명
<?=$wr_commentcnt?> 커맨트갯수 원본 $row[wr_commentcnt]
<?=$wr_subject?> 제목 원본 $row[wr_subject]
<?=$wr_content?> 내용 원본 $row[wr_content]
<?=$wr_id?> 글번호 원본 $row[wr_id]
<?=$wr_name?> 작성자이름 원본 $row[wr_name]
<?=$wr_datetime?> 작성시간 원본 $row[wr_datetime]
기본적으로 최신게시판에 사용되는 변수는 다 선언했습니다.
기타 변수 추가는 userlib.inc.php에서 변수명 = $row[wr_변수명];
하고 선언해주면됩니다.
*/
?>
<!-- 최근글 목록이 나오는 부분 -->
<table border=0 cellpadding=0 cellspacing=0 width=100% align=center>
<tr>
<td width=75% onMouseOver=this.style.backgroundColor='FFFAF3' onMouseOut=this.style.backgroundColor='' style='font-size:9pt;' title='<?=$wr_content?>'>
<img src='<?=$skin_img?>/arrow.gif' border=0>
<a href='<?=$cfg[url]?>/gnuboard.php?bo_table=<?=$bo_table?>&wr_id=<?=$wr_id?>'><?=$wr_subject?></a><?=$wr_commentcnt?><?=$icon_new?> <?=$icon_hot?> <?=$icon_battle?> <?=$icon_secret?>
<td width=100 align=right style='font-size:9pt;'><?=$wr_datetime?></td>
</td>
</tr>
</table>
대략적인 변수선언과 정리한걸 올린겁니다. 전체소스가 다되면 샘플홈페이지 통채로 올리겠습니다.
외부로그인, 최신글추출, index.html파일의 위치 루트, 또는 그누보드와 함께 있는것 모두 테스트상 아무문제 없이
작동합니다. 아쉽지만 windows2000 IIS서버에서는 제가 서버 계정이 없는 관계로 테스트를 못해보았습니다.
한번들 보시고 변수명 함수명통합작업했으면합니다. 운영자님글보니 정식버젼되면 손되실것 같은데...그젼에 기본틀을 마려하는것도 좋으리라고 생각됩니다. *^^*
추천
5
5
댓글 전체
제가 보기엔 이 방식이 가장 무난 해 보이는데요.
만일 최신글스킨등의 관리자님이 제안하신 방식대로의 방향이 확정되고 난후에
모든 정리를 하는역할을 CCC님이 총대를 매주심이..^^
에고 죄송..이왕하신거...마무리 하심이 ...캬캬캬
만일 최신글스킨등의 관리자님이 제안하신 방식대로의 방향이 확정되고 난후에
모든 정리를 하는역할을 CCC님이 총대를 매주심이..^^
에고 죄송..이왕하신거...마무리 하심이 ...캬캬캬
정말 수고가 많으십니다........
감사합니다..... 빠른시일 안에 완판을 봤으면 하는 군요......
화이팅!!!!!!!!!
감사합니다..... 빠른시일 안에 완판을 봤으면 하는 군요......
화이팅!!!!!!!!!
에고 진짜 좋은 내용이네요.
버전업할때마다 이런 수고를 해주시니 감사 할 따름입니다.
전 나름대로 제방법대로 하고 있습니다만.
이처럼 하는것이 더 낫겟군요.
이미 해놓은거 수정하기 귀찮아서 안 바꿀껍니다만.^^
다음 사이트 제작시엔 써먹어야 겠네요^^
버전업할때마다 이런 수고를 해주시니 감사 할 따름입니다.
전 나름대로 제방법대로 하고 있습니다만.
이처럼 하는것이 더 낫겟군요.
이미 해놓은거 수정하기 귀찮아서 안 바꿀껍니다만.^^
다음 사이트 제작시엔 써먹어야 겠네요^^
홈디렉토리에 그누보드를 넣고 사용하게 되면 손도 덜가고 편하긴 편합니다만 관리가 힘들어진다는 단점이 있지요.
뭐가 뭔지 다들 몰라보더군요.
기본소스와 일반문서가 섞여버리니 업데이트할때나 다른사람이 관리를 하게된다면 상당히 불편합니다.
일반파일의 이름앞에 _를 붙여서 써보긴 했지만 그래도 좀 불편하조.
또한 홈디렉토리의 퍼미션은 일반적으로 711로 되어있는데 711에서는 php가 구동이 안됩니다.
그래서 707이나 777로 바꿔줘야 하는데 이럴경우 보안상 좋지않다는 소릴 들었습니다.
물론 스쿨처럼 /v2 이런식으로 하위디렉으로 몽땅 밀어넣고 사용한다면 아무 상관없겠지만요..
잡담였슴다.
뭐가 뭔지 다들 몰라보더군요.
기본소스와 일반문서가 섞여버리니 업데이트할때나 다른사람이 관리를 하게된다면 상당히 불편합니다.
일반파일의 이름앞에 _를 붙여서 써보긴 했지만 그래도 좀 불편하조.
또한 홈디렉토리의 퍼미션은 일반적으로 711로 되어있는데 711에서는 php가 구동이 안됩니다.
그래서 707이나 777로 바꿔줘야 하는데 이럴경우 보안상 좋지않다는 소릴 들었습니다.
물론 스쿨처럼 /v2 이런식으로 하위디렉으로 몽땅 밀어넣고 사용한다면 아무 상관없겠지만요..
잡담였슴다.
저의 경우는 위와 비슷하게 사용하고 있구요. 각 스킨의 디렉명을 skin, skin_outlogin, skin_prelist로 했슴니다..
물론 lib.inc.php를 수정해야 하겠지만요..
로그아웃문제는 ㅠ.ㅠ check파일을 수정하지 않는이상 자꾸 그누보드 디렉토리로만 갈려고 하네요..
글루 가면 안데는딩.
물론 lib.inc.php를 수정해야 하겠지만요..
로그아웃문제는 ㅠ.ㅠ check파일을 수정하지 않는이상 자꾸 그누보드 디렉토리로만 갈려고 하네요..
글루 가면 안데는딩.
다른 분들이 올린 글에서 인덱스와 그누보드가 다른 경우에 아웃로그인이 가능하도록 한다고 쓴 팁 란의 글들을 보면서 어떻게 이 mblogout.php와 mblogincheck.php 파일을 수정하지 않고도 가능하다는 것인지 그 부분이 궁금했습니다.
이 두 파일을 수정하지 않고, 로그인, 로그아웃을 하면 분명히 문제가 생길 것 같은데 그런 부분에 대한 언급이 없어서 말이죠. (참고로, 김장군님, 김장군님의 스킨에서도 mblogout.php와 mblogincheck.php 이 두 파일을 수정하지 않고도 로그인, 로그아웃시 문제가 발생되지 않나요? 문제라는 건 로그아웃시 그누보드 디렉토리로 이동되는 문제..)
명확하게 답을 해 주시니 궁금증이 가시는군요.. 감사합니다.
이 두 파일을 수정하지 않고, 로그인, 로그아웃을 하면 분명히 문제가 생길 것 같은데 그런 부분에 대한 언급이 없어서 말이죠. (참고로, 김장군님, 김장군님의 스킨에서도 mblogout.php와 mblogincheck.php 이 두 파일을 수정하지 않고도 로그인, 로그아웃시 문제가 발생되지 않나요? 문제라는 건 로그아웃시 그누보드 디렉토리로 이동되는 문제..)
명확하게 답을 해 주시니 궁금증이 가시는군요.. 감사합니다.

음 1차분이라고 올렸는데.... mblogout.php와 mblogincheck.php를 수정이 불가피합니다.
아시다시피 로그인후, 로그인아웃후에는 무조건 그누보드설치위치로만 가게 되어 있습니다. 그렇기 때문에 두파일의 수정은 노프레임에, 그누보드와 index.html를 다른디렉토리에 존재할경우를 대비해서 수정이 불가피합니다.
아시다시피 로그인후, 로그인아웃후에는 무조건 그누보드설치위치로만 가게 되어 있습니다. 그렇기 때문에 두파일의 수정은 노프레임에, 그누보드와 index.html를 다른디렉토리에 존재할경우를 대비해서 수정이 불가피합니다.
상세하게 글을 작성해서 올려주신 것 너무 감사합니다. 이같은 글이 그누보드의 표준안을 마련하는데 제작자님에게도 참고가 될 것이고, 여러 사용자들에게 많은 도움이 되리라 생각합니다.
한 가지 궁금한 점이 있는데요. 제가 ccc 님의 2.10 버전에 대한 설명글을 읽고 따라하면서 그누보드를 사용하다 보니까 2.10 버전과 다른 점이 한 가지 있어서 질문을 드립니다. 2.10 버전에 대한 설명 글을 보면 mblogout.php, mblogincheck.php 두 파일의 내용도 수정을 해야 되는 것으로 설명되어 있는데 2.32 베타 버전에서는 이 두 개의 파일을 수정하지 않아도 되는 것인지요? 즉, 2.10 버전의 글은 무시하고, 이 글대로만 하면 되는 것인지요? 질문하면서도 어리석은 질문을 한다 싶지만 차이점을 짚고 넘어가고 싶어서 질문을 드립니다.
한 가지 궁금한 점이 있는데요. 제가 ccc 님의 2.10 버전에 대한 설명글을 읽고 따라하면서 그누보드를 사용하다 보니까 2.10 버전과 다른 점이 한 가지 있어서 질문을 드립니다. 2.10 버전에 대한 설명 글을 보면 mblogout.php, mblogincheck.php 두 파일의 내용도 수정을 해야 되는 것으로 설명되어 있는데 2.32 베타 버전에서는 이 두 개의 파일을 수정하지 않아도 되는 것인지요? 즉, 2.10 버전의 글은 무시하고, 이 글대로만 하면 되는 것인지요? 질문하면서도 어리석은 질문을 한다 싶지만 차이점을 짚고 넘어가고 싶어서 질문을 드립니다.

다른건 다 좋은데 게시물 추출 부분에서 스킨 디렉토리 밑에 최근게시물 까지 넣으면
관리자 메뉴에들어 가면 보드 스킨설정 부분에서 최근 게시물 스킨도 보이고요
보드스킨인지 게시물 스킨인지 분별이 안가는 문제
게시물 디렉토리에 여러 다른 스킨디렉토리(앞으로 제작될 다양한 스킨폴더들 안에 최근공지,글,이미지 들의 폴더들)
스킨을 다양하게 추출하기 위해 최근글스킨만 3개 사용하고 공지 폴더 1개 이미지폴더 1개 를사용한다면
문제가 될것 같으네요 저 같은경우
이런 문제도 좀 해결 해주시면 감사 제가 너무 무리한 부탁을 이렇게 준비하기도 쉽진 안았을덴데...............
함수 newlist 쓰든 상관은없는데 저는 제로보드 참고로 하다보니 print_bbs,print_notice,print_pic 아무래도
제로보드 사용자 층이 두텁다보니 그래했고요 별의미는없어요 앞으로 표준안이 될때 까지는
최근 글,공지,이미지 스킨을 안 만들 거고요 자연이 잊혀지겠지요.....
정성이 많이 담긴 글이네요.
앞으로도 좋은글 많이 남겨 주세요.
수고 많으셨습니다.
관리자 메뉴에들어 가면 보드 스킨설정 부분에서 최근 게시물 스킨도 보이고요
보드스킨인지 게시물 스킨인지 분별이 안가는 문제
게시물 디렉토리에 여러 다른 스킨디렉토리(앞으로 제작될 다양한 스킨폴더들 안에 최근공지,글,이미지 들의 폴더들)
스킨을 다양하게 추출하기 위해 최근글스킨만 3개 사용하고 공지 폴더 1개 이미지폴더 1개 를사용한다면
문제가 될것 같으네요 저 같은경우
이런 문제도 좀 해결 해주시면 감사 제가 너무 무리한 부탁을 이렇게 준비하기도 쉽진 안았을덴데...............
함수 newlist 쓰든 상관은없는데 저는 제로보드 참고로 하다보니 print_bbs,print_notice,print_pic 아무래도
제로보드 사용자 층이 두텁다보니 그래했고요 별의미는없어요 앞으로 표준안이 될때 까지는
최근 글,공지,이미지 스킨을 안 만들 거고요 자연이 잊혀지겠지요.....
정성이 많이 담긴 글이네요.
앞으로도 좋은글 많이 남겨 주세요.
수고 많으셨습니다.

김장군님 말씀대로 스킨폴더는 나누는게 좋을듯싶네요! 아무래도 관리자모드에서 게시판스킨만 보이게 하기위해서는
제로보드처럼 외부로그인스킨폴더와 최신글,최신그림,공지,기타스킨을 따로 폴더를 생성하고 그곳에 구분지어 넣는게 좋겠다고 생각이 됩니다.
스킨폴더를
gnu2/skin/board/ <---스킨폴더
gnu2/skin/outlogin/ <---외부로그인
gnu2/skin/print_bbs/ <---최신글
이런씩으로 하면 현재 관리자모드및 기타 lib.inc.php부분에서 소스수정이 불가피해서 이 방향은 운영자님이 결정하셔야할것 같고
gnu2/skin/ <---게시판스킨
gnu2/skinpub/outlogin/ <--외부로그인스킨
gnu2/skinpub/print_bbs/ <--최신글스킨
이런씩으로 하는것도 괜찮을듯싶습니다.
그리고 님이 말씀하신 최신글스킨만 3개사용 공지폴더 1개 이미지폴더 1개 이건 문제가 없는 것 같은데 무엇을 정확히 말씀하시는지 감이오지 않습니다.
그리고 최신글추출함수명은 님이 말씀하신대로 제로보드 사용자가 많기때문에 그 변수로 변경되는게 더 좋을듯 싶네요....다른 고수님들 의견좀......
제로보드처럼 외부로그인스킨폴더와 최신글,최신그림,공지,기타스킨을 따로 폴더를 생성하고 그곳에 구분지어 넣는게 좋겠다고 생각이 됩니다.
스킨폴더를
gnu2/skin/board/ <---스킨폴더
gnu2/skin/outlogin/ <---외부로그인
gnu2/skin/print_bbs/ <---최신글
이런씩으로 하면 현재 관리자모드및 기타 lib.inc.php부분에서 소스수정이 불가피해서 이 방향은 운영자님이 결정하셔야할것 같고
gnu2/skin/ <---게시판스킨
gnu2/skinpub/outlogin/ <--외부로그인스킨
gnu2/skinpub/print_bbs/ <--최신글스킨
이런씩으로 하는것도 괜찮을듯싶습니다.
그리고 님이 말씀하신 최신글스킨만 3개사용 공지폴더 1개 이미지폴더 1개 이건 문제가 없는 것 같은데 무엇을 정확히 말씀하시는지 감이오지 않습니다.
그리고 최신글추출함수명은 님이 말씀하신대로 제로보드 사용자가 많기때문에 그 변수로 변경되는게 더 좋을듯 싶네요....다른 고수님들 의견좀......