2.10정식 외부로그인, 최신글추출, 대략적인 설명과 예제 정보
일반 2.10정식 외부로그인, 최신글추출, 대략적인 설명과 예제
본문
http://111.111.111.111/~ccc라는 계정하에서 설명해드리겠습니다.
전체적으로 제가 설명하는게 설명이 부족하다는걸 느낌니다. 하지만 좀더 세부적으로는 적지 않겠습니다. 직접해보시고 문제도 해결해라는뜻에서 해결할수 있는 힌트수준이라고 생각하시면 좋겠습니다.
정확한 답을 주기는 힘들지 않나 싶습니다.
먼저 디렉토리 위치
http://111.111.111.111/~ccc/index.html <--- ccc계정안에 index.html이 존재한걸로 과정
http://111.111.111.111/~ccc/gnu2/ <--- 그누보드는 gnu2라는 디렉토리에 존재한다고 과정
파일 위치를 잘 확인하시기 바랍니다.
기본적으로 그누보드설치위치와 인덱스파일 위치를 다른걸 가정으로 두고 외부로그인, 최신글 추츨을 문제 없이 작동하도록 설명해보겠습니다.
//###########################################################################
//# http://111.111.111.111/~ccc/index.html 의 파일 내용
//###########################################################################
<? require_once "./lib.inc.php";
require_once "./userlib.inc.php"; ?>
<html>
<head>
<title>테스트용</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 leftmargin='0' topmargin='0' marginwidth='0' marginheight='0'>
<table width=800 cellpadding=0 cellspacing=0 border=0 >
<!-------------------- 타이틀 출력 --------------------------->
<tr align=top>
<td>
타이틀 지정
</td>
</tr>
<tr>
<td>
<table width=800 border=0 cellpadding=0 cellspacing=0>
<!---------------------- 아웃로그인 --------------------------->
<tr>
<td><? include "$cfg[url]/outlogin.php"; ?></td>
</tr>
<!---------------------- 메뉴 출력 ---------------------------->
<tr>
<td><a href="http://111.111.111.111/~ccc/메뉴1.html">메뉴1</a></td>
<td><a href="http://111.111.111.111/~ccc/메뉴2.html">메뉴1</a></td>
<td><a href="http://111.111.111.111/~ccc/메뉴3.html">메뉴1</a></td>
<td><a href="http://111.111.111.111/~ccc/메뉴4.html">메뉴1</a></td>
</tr>
</table>
</td>
</tr>
<tr >
<td>
<!-------------------- 최신글 출력 --------------------------->
<table width=800 border=0 cellpadding=0 cellspacing=0 valign=top>
<tr >
<td><? newlist('login_skin', 'free1', '자유1', 5, 35); ?></td>
<td><? newlist('login_skin', 'free2', '자유2', 5, 35); ?></td>
</tr>
<tr >
<td><? newlist('login_skin', 'free3', '자유3', 5, 35); ?></td>
<td><? newlist('login_skin', 'free4', '자유4', 5, 35); ?></td>
</tr>
<tr >
<td><? newlist('login_skin', 'pic1', '겔러리1', 5, 35); ?></td>
<td><? newlist('login_skin', 'pic2', '겔러리2', 5, 35); ?></td>
</tr>
</table>
</td>
</tr>
<tr>
<table width=800 height=30 border=1 cellpadding=0 cellspacing=0>
<tr>
<td align="center"><b>저작권 표시<b></td>
</tr>
</table>
</tr>
</table>
</body>
</html>
//###########################################################################
//# http://111.111.111.111/~ccc/lib.inc.php 의 파일 내용
//###########################################################################
<?
// 상대경로
$reldir = "./gnu2";
require_once "$reldir/lib.inc.php";
?>
// 이 상대 경로는 주는 이유는 index.html에서 require_once "gnu2/lib.inc.php이렇게 선언하면
변수값이 넘어오지않아서 외부로그인 스킨이 제대로 작동하지 않는다.
//###########################################################################
//# http://111.111.111.111/~ccc/outlogin.php 의 파일 내용
//###########################################################################
<?
/*---------------------------
** 외부로그인 **
---------------------------*/
require_once "./lib.inc.php";
$게시판 = $bo_table;
$아이디 = $member[mb_id];
$이름 = $member[mb_name];
$포인트 = $member[mb_point];
$레벨 = $member[mb_level];
$아웃스킨경로 = "$cfg[url]/$cfg[dir_skin]/";
// $아웃스킨 = 'ryl_login';
if ($member[mb_id]) { // 로그인 중이라면
require_once "gnu2/skin/ryl_login/outlogin1.skin.php";
} else { // 로그아웃 중이라면
require_once "gnu2/skin/ryl_login/outlogin2.skin.php";
}
unset($temp);
// 사실 아웃로그인스킨은 고정값이기때문에 변수처리를 할려다가 고정값으로 변경했다.
?>
//###########################################################################
//# http://111.111.111.111/~ccc/gnu2/skin/ryl_login/outlogin1.skin.php 의 파일 내용
//###########################################################################
<table border=0 cellpadding=0 cellspacing=0>
<tr>
<td background='<? echo "$아웃스킨경로$아웃스킨" ?>/images/outllogin1_01.gif' width=164 height=19 style='font-size:9pt; font-family:굴림; color:#FFFFFF;'>
<? echo "이름:$이름($포인트)" ?></td>
<td width=22 height=19>
<input type=image value='로그아웃' onclick='location="<?=$cfg[url]?>/mblogout.php";' src='<? echo "$아웃스킨경로$아웃스킨" ?>/images/outllogin1_02.gif' align=absmiddle> </td>
<td background='<? echo "$아웃스킨경로$아웃스킨" ?>/images/outllogin1_03.gif' width=9 height=19 ></td>
<td width=22 height=19>
<input type=image value='정보수정' onclick="outsidembform('<? echo $게시판 ?>')" src='<? echo "$아웃스킨경로$아웃스킨" ?>/images/outllogin1_04.gif' align=absmiddle></td>
<td>
<img src='<? echo "$아웃스킨경로$아웃스킨" ?>/images/outllogin1_05.gif' width=9 height=19 ></td>
<td background='<? echo "$아웃스킨경로$아웃스킨" ?>/images/outllogin1_06.gif' width=22 height=19>
<?
if ($member[mb_level] >= $cfg[level_max]) {
echo "<a href='{$cfg[url]}/manage/' target=_black><img src='$아웃스킨경로$아웃스킨/images/outllogin1_06.gif' width=22 height=19 border=0 align=absmiddle></a>";
} else {
echo "<a href='javascript:mbleave('$게시판');'><img src='$아웃스킨경로$아웃스킨/images/outllogin1_06.gif' width=22 height=19 border=0 align=absmiddle></a>";
} ?>
</td>
</tr>
</table>
<script language='javascript'>
function outsidembform(bo_table)
{
window.open('<?=$cfg[url]?>/mbform.php?w=u&gb_table='+bo_table, '회원정보수정', 'left=10,top=10,width=550,height=600,scrollbars=yes');
}
function mbleave(bo_table)
{
if (confirm('회원 탈퇴 {회원탈퇴대기일}일 후 {회원아이디}님의 모든 자료가 삭제됩니다.\n\n정말 회원을 탈퇴하시겠습니까?')) {
location = '<?=$cfg[url]?>/mbleave.php{uc1}bo_table{uc2}' + bo_table;
}
}
</script>
//###########################################################################
//# http://111.111.111.111/~ccc/gnu2/skin/ryl_login/outlogin2.skin.php 의 파일 내용
//###########################################################################
<? echo "
<table border=0 cellpadding=0 cellspacing=0>
<form name=outsideloginform method=post action='{$cfg[url]}/mblogincheck.php' onsubmit='return outsideloginformcheck(this)' autocomplete='off'>
<input type='hidden' name='bo_table' value='$게시판'>
<tr>
<td background='$아웃스킨경로$아웃스킨/images/outlogin_01.gif' width=21 height=19></td>
<td background='$아웃스킨경로$아웃스킨/images/outlogin_02.gif' width=59 height=19 ><input type=text name=mb_id size=10 style='font-family:tahoma;font-size:7pt'></td>
<td background='$아웃스킨경로$아웃스킨/images/outlogin_03.gif' width=21 height=19></td>
<td background='$아웃스킨경로$아웃스킨/images/outlogin_04.gif' width=58 height=19 ><input type=password name=mb_passwd size=10 style='font-family:tahoma;font-size:7pt'></td>
<td background='$아웃스킨경로$아웃스킨/images/outlogin_05.gif' width=16 height=19></td>
<td width=18 height=19 >
<input name='outsideloginformcheck' type=image src='$아웃스킨경로$아웃스킨/images/outlogin_06.gif' border=0 align=absmiddle></td>
<td background='$아웃스킨경로$아웃스킨/images/outlogin_07.gif' width=5 height=19></td>
<td width=29 height=19 >
<a href='JavaScript:mbformopen();'><img src='$아웃스킨경로$아웃스킨/images/outlogin_08.gif' border=0 align=absmiddle></a></td>
<td background='$아웃스킨경로$아웃스킨/images/outlogin_09.gif' width=3 height=19></td>
<td ><a href='$cfg[url]/mbpasswdforget.php'><img src='$아웃스킨경로$아웃스킨/images/outlogin_10.gif' border=0 align=absmiddle></a></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> "
?>
//###########################################################################
//# http://111.111.111.111/~ccc/userlib.inc.php의 파일 내용
//###########################################################################
<?
// 새글 추출
function newlist($skins, $bo_table, $subject, $rows, $subjectlen='')
{
global $cfg;
$sql = " select * from $cfg[table_board] where bo_table = '$bo_table' ";
$bd = sql_fetch_array($sql);
if ($subjectlen == '') $subjectlen = $bd[bo_subject_len];
$cfg[board_table_prefix] = "gb_write_"; // 게시판 테이블의 접두사
$cfg[url] = "http://111.111.111.111/~ccc/gnu2"; // 사실 이부분은 이후로 config.inc.php에서 설정하기때문에 필요없지만 적어본다.
$skindir = "$cfg[url]/skin/$skins";
$skinimg = "$skindir/images";
include "./gnu2/skin/$skins/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='$skinimg/icon_file.gif' align=absmiddle>";
$icon_link = "";
if ($row[wr_link1] || $row[wr_link2])
$icon_link = "<img src='$skinimg/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='$skinimg/icon_new.gif' align=absmiddle>";
$icon_hot = "";
if ($row[wr_hit] >= $bd[bo_hot])
$icon_hot = "<img src='$skinimg/icon_hot.gif' align=absmiddle>";
$icon_battle = "";
if ($row[wr_commentcnt] >= $bd[bo_battle])
$icon_battle = "<img src='$skinimg/icon_battle.gif' align=absmiddle>";
$icon_secret = "";
if ($row[wr_secret])
$icon_secret = "<img src='$skinimg/icon_secret.gif' align=absmiddle>";
$wr_commentcnt = ($row[wr_commentcnt]) ? $row[wr_commentcnt] : null;
$wr_subject = get_text(cut_str($row[wr_subject], $subjectlen, '…'));
$wr_content = get_text(cut_str($row[wr_content], 400, '....[계속]'));
$wr_id = $row[wr_id];
$wr_name = $row[wr_name];
$wr_datetime = $row[wr_datetime];
include "./gnu2/skin/$skins/newlist_main.skin.php";
}
mysql_free_result($result);
}
// 최신그림 추출
function newpic($skins, $bo_table, $subject, $rows, $subjectlen='')
{
global $cfg;
$sql = " select * from $cfg[table_board] where bo_table = '$bo_table' ";
$bd = sql_fetch_array($sql);
if ($subjectlen == '') $subjectlen = $bd[bo_subject_len];
$cfg[board_table_prefix] = "gb_write_"; // 게시판 테이블의 접두사
$cfg[url] = "http://111.111.111.111.111/~ccc/gnu2";
$skindir = "$cfg[url]/skin/$skins";
$skinimg = "$skindir/images";
$filedir = "$cfg[url]/data/file";
include "./gnu2/skin/$skins/newpic_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='$skinimg/icon_file.gif' align=absmiddle>";
$icon_link = "";
if ($row[wr_link1] || $row[wr_link2])
$icon_link = "<img src='$skinimg/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='$skinimg/icon_new.gif' align=absmiddle>";
$icon_hot = "";
if ($row[wr_hit] >= $bd[bo_hot])
$icon_hot = "<img src='$skinimg/icon_hot.gif' align=absmiddle>";
$icon_battle = "";
if ($row[wr_commentcnt] >= $bd[bo_battle])
$icon_battle = "<img src='$skinimg/icon_battle.gif' align=absmiddle>";
$icon_secret = "";
if ($row[wr_secret])
$icon_secret = "<img src='$skinimg/icon_secret.gif' align=absmiddle>";
$wr_commentcnt = ($row[wr_commentcnt]) ? $row[wr_commentcnt] : null;
$wr_subject = get_text(cut_str($row[wr_subject], $subjectlen, '…'));
$wr_content = get_text(cut_str($row[wr_content], 400, '....[계속]'));
$wr_id = $row[wr_id];
$wr_name = $row[wr_name];
$wr_datetime = $row[wr_datetime];
$wr_images = $row[wr_file1];
$temp_tr = false;
if ($i > 0 && ($i % 5 == 0)) $temp_tr = true;
echo "
<td valign=top>
<table width=100%>
<tr>
<td align=center> ";
if ($wr_images) {
echo "
<a href='{$cfg[url]}/gbview.php?bo_table={$bo_table}&wr_id={$wr_id}'>
<img src='{$filedir}/{$wr_images}' width=110 height=80 border=0> </a> ";
}
echo "
</td>
</tr>
</table>
</td> ";
include "http://111.111.111.111/~ccc/gnu2/skin/$skins/newpic_main.skin.php";
}
mysql_free_result($result);
echo "</tr></table>";
}
?>
// 이 usrlib.inc.php부분은 최신글, 최신그림추출부분입니다. 이부분에 해당되는건 박갑성님 수정버젼사용하셔도 좋습니다. skin파일도 마찬가지입니다.
외부로그인을 위한 파일 수정 처리작업
//###########################################################################
//# http://111.111.111.111/~ccc/gnu2/config.inc.php 의 파일 내용
//###########################################################################
<?
$cfg[url] = "http://111.111.111.111/~ccc/gnu2";
//이걸 선언한건 스킨부분에서 처리를 위해서 넣었습니다. 또한 실행을 하다보면 전혀 다른곳으로
가는 경우가 있으신분들이 있을겁니다. 그이유는 현재폴더에서 모든 그누php파일을 찾게되어
있는데 만약에 그누보드를 include하여서 사용하는경우 전혀 다른곳에서 그누보드 php파일을
찾게 됨으로서 에러를 잃으키는걸 방지하기 위해서 여기서 선언을하고
gblist.php, gbview.php, 등등 링크부분에서 ./gblist.php 이런씩으로 되어있는곳을
$cfg[url]/gblist.php이런식으로 선언하여 절대값으로 변경함으로써 오작동을 방지합니다.
/*
** 테이블 명
*/
$cfg[table_default] = "gb_default"; // 기본환경설정 테이블
$cfg[table_group] = "gb_group"; // 그룹 설정 테이블
$cfg[table_board] = "gb_board"; // 게시판 설정 테이블
$cfg[table_login] = "gb_login"; // 로그인 테이블 (접속자수)
$cfg[table_member] = "gb_member"; // 회원 테이블
$cfg[table_memo] = "gb_memo"; // 메모 테이블
$cfg[table_zip] = "gb_zip"; // 우편번호 테이블
$cfg[table_vote] = "gb_vote"; // 투표 테이블
/*
** 디렉토리
*/
$cfg[dir_data] = "data";
$cfg[dir_file] = "$cfg[dir_data]/file";
$cfg[dir_session] = "$cfg[dir_data]/session";
$cfg[dir_member] = "$cfg[dir_data]/member"; // 회원아이콘 저장 디렉토리
$cfg[dir_skin] = "skin";
$cfg[dir_manage] = "manage";
$cfg[dir_image] = "image";
/*
** 권한
*/
$cfg[level_max] = 10; // 권한 최대값 (최고 관리자가 아님)
$cfg[level_register] = 2; // 회원가입시 기본 설정 권한
$cfg[level_guest] = 1; // 방문객 기본 권한
/*
** 기타
*/
$cfg[write_table_prefix] = "gb_write_"; // 게시판 테이블의 접두사
$cfg[link_count] = 2; // 링크의 필드 갯수
$cfg[file_count] = 2; // 업로드 파일의 필드 갯수
$cfg[image_extension] = "/(\.png|\.gif|\.jp[e]?g)$/i"; // bmp는 용량이 크므로 생략
$cfg[flash_extension] = "/(\.swf)$/i"; // 플래쉬
$cfg[movie_extension] = "/(\.as[x|f]+|\.wm[v|a]+|\.mp[e]?g|\.mov|\.avi|\.mp3)$/i"; // 동영상
$cfg[large_image_size] = 580; // 이 수치가 넘어가면 이 수치로 게시판 이미지 크기 고정
$cfg[search_section] = 10000; // 검색시 설정값 단위로 검색
$cfg[reply_max] = 10; // 답변은 설정값 단계 까지만
$cfg[login_minutes] = 3; // 분(설정값) 이내의 접속만 현재 접속자로 인정
?>
//###########################################################################
//# http://111.111.111.111/~ccc/gnu2/mblogincheck.php의 파일 내용
//###########################################################################
<?
require_once "./lib.inc.php";
$mb = get_member($mb_id);
// 가입된 회원이 아니다. 암호가 틀리다. 라는 메세지를 따로 보여주지 않는 이유는
// 회원아이디를 입력해 보고 맞으면 또 암호를 입력해보는 경우를 방지하기 위해서임.
// 불법사용자의 경우 회원아이디가 틀린지, 암호가 틀린지를 알기까지는 많은 시간이 소요됨.
if ((!$mb[0]) || (sql_password($mb_passwd) != $mb[mb_passwd])) {
alert("가입된 회원이 아니거나 암호가 틀립니다.\\n\\n암호는 대소문자를 구분합니다.");
}
// 차단된 아이디인가?
if ($mb[mb_intercept_date] && $mb[mb_intercept_date] <= date("Ymd")) {
$date = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\1년 \\2월 \\3일", $mb[mb_intercept_date]);
alert("회원님의 아이디는 접근이 금지되어 있습니다.\\n\\n처리일 : $date");
}
// 탈퇴한 아이디인가?
if ($mb[mb_leave_date] && $mb[mb_leave_date] <= date("Ymd")) {
$date = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\1년 \\2월 \\3일", $mb[mb_leave_date]);
alert("탈퇴한 아이디이므로 접근하실 수 없습니다.\\n\\n탈퇴일 : $date");
}
// 세션에 저장
$ss_mb_id = $mb[mb_id];
session_register("ss_mb_id");
if (substr($mb[mb_today_login], 0, 10) != $today) {
insert_point($mb[mb_id], $default[de_login_point]);
}
$sql = " update $cfg[table_member] set mb_today_login = NOW() where mb_id = '$mb_id' ";
sql_query_error($sql);
if ($url) {
//if (preg_match("/manage/", $url))
$link = $url;
} else {
$outlog1 = ""; // 여길처리해야 로그인체크후 홈디렉토리로 갑니다.안하면
if ($mb_id) { // 그누보드설치디렉토리로 이동합니다. 그리고 정지 끝 *^^*
$link = "../";
$outlog1 = "1"; //이 변수를 사용하지 않으면 홈계정에서는 로그오프체크를 못합니다.
} else {
$link = "$cfg[url]/";
}
}
header("location:$link");
?>
//###########################################################################
//# http://111.111.111.111/~ccc/gnu2/mblogout.php의 파일 내용
//###########################################################################
<?
require_once "./lib.inc.php";
// 세션에서 회원아이디 삭제
session_unregister("ss_mb_id");
if ($url) {
$link = $url;
} else if ($bo_table) {
$link = "./gblist.php?bo_table=$bo_table";
} else {
// ####### 수정후 ##########
if ($outlog1 = 1) {
$link = "../";
} else {
$link = "$cfg[url]/";
}
}
header("location:$link");
?>
이것으로 외부로그인, 최신글추출 및 기타사항이 끝났습니다. 마지막으로
_head.php, _foot.php 파일 수정이 남았습니다.
이 두개의 파일은 그누보드 설치후 보시는 화면의 왼족메뉴와 위쪽메뉴에 해당하는 부분입니다.
//###########################################################################
//# http://111.111.111.111/~ccc/gnu2/_head.php의 파일 내용
//###########################################################################
<?
$head_include = false;
if ($default[de_include_head] && file_exists("$default[de_include_head]")) {
require_once "$default[de_include_head]";
$head_include = true;
}
echo $default[de_content_head];
if ($group[gr_include_head] && file_exists("$group[gr_include_head]")) {
require_once "$group[gr_include_head]";
$head_include = true;
}
echo $group[gr_content_head];
if ($board[bo_include_head] && file_exists("$board[bo_include_head]")) {
require_once "$board[bo_include_head]";
$head_include = true;
}
echo $board[bo_content_head];
if ($head_include) {
echo "<link rel='stylesheet' href='$dir/style.skin.css' type='text/css'>";
return;
}
$document_title = $default[de_subject];
if ($html_subject)
$document_title .= " > $html_subject";
?>
<link rel='stylesheet' href='<?=$cfg[url]?>/style.css' type='text/css'>
<link rel='stylesheet' href='<?=$cfg[url]?>/wrest.css' type='text/css'>
<link rel='stylesheet' href='<?=$dir?>/style.skin.css' type='text/css'>
<!-- 상단 책갈피 -->
이부분까지는 노프레임을 만들때(상단메뉴부분을 읽어들이는 부분입니다.
아래부분은 순수하게 모두다 왼쪽메뉴(게시판, 현재접속자, 현재가입자)와 위쪽메뉴를 나타내는 부분입니다.) 자기가 원하는 스타일로 만드고 싶을때는 과감히 삭제하시는게 좋습니다.
//###########################################################################
//# http://111.111.111.111/~ccc/gnu2/_foot.php의 파일 내용
//###########################################################################
<?
$tail_include = false;
echo $board[bo_content_tail];
if ($board[bo_include_tail] && file_exists("$board[bo_include_tail]")) {
require_once "$board[bo_include_tail]";
$tail_include = true;
}
echo $group[gr_content_tail];
if ($group[gr_include_tail] && file_exists("$group[gr_include_tail]")) {
require_once "$group[gr_include_tail]";
$tail_include = true;
}
echo $default[de_content_tail];
if ($default[de_include_tail] && file_exists("$default[de_include_tail]")) {
require_once "$default[de_include_tail]";
$tail_include = true;
}
if ($tail_include) return;
?>
<script language='JavaScript' src='<?=$cfg[url]?>/wrest.js'></script>
이부분까지는 하단 읽어들이는 부분입니다.
실질적으로 현 디자인은 어찌보면 운영자님이 계획하신 설정메뉴에 상단, 하단 파일첨가에 맞지 않는 화면디자인입니다. 이 _head.php자체가 그 역활을 하고 있기 때문입니다.
홈페이지를 작성하실분은 둘중에 하나는 포기하셔야할겁니다.
게시판설정상태에서 상단,하단파일첨가를 사용안하실려면 _head.php상에서 모든걸 만들어주셔야하고
그게 아니라면 상단, 하단파일첨가에서 설정하시고 _head,php상의 html부분은 전부 삭제를 하셔야할겁니다.
전체 노프레임부분까지 구현 소스를 올려드리면 좋겠지만 여기까지만 하겠습니다. 조금 소스를 보시고 분석도 해보시고 연구도좀 해보시기를 권해드립니다.
p.s : 저도 님들과 같은 아주 초짜라는걸 알아주시길 바라며....
의문사항은 리플을.... 글을 잘적어서그러나 제가 올린글에는 거의 대부분 리플이 없군요...*^^*
전체적으로 제가 설명하는게 설명이 부족하다는걸 느낌니다. 하지만 좀더 세부적으로는 적지 않겠습니다. 직접해보시고 문제도 해결해라는뜻에서 해결할수 있는 힌트수준이라고 생각하시면 좋겠습니다.
정확한 답을 주기는 힘들지 않나 싶습니다.
먼저 디렉토리 위치
http://111.111.111.111/~ccc/index.html <--- ccc계정안에 index.html이 존재한걸로 과정
http://111.111.111.111/~ccc/gnu2/ <--- 그누보드는 gnu2라는 디렉토리에 존재한다고 과정
파일 위치를 잘 확인하시기 바랍니다.
기본적으로 그누보드설치위치와 인덱스파일 위치를 다른걸 가정으로 두고 외부로그인, 최신글 추츨을 문제 없이 작동하도록 설명해보겠습니다.
//###########################################################################
//# http://111.111.111.111/~ccc/index.html 의 파일 내용
//###########################################################################
<? require_once "./lib.inc.php";
require_once "./userlib.inc.php"; ?>
<html>
<head>
<title>테스트용</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 leftmargin='0' topmargin='0' marginwidth='0' marginheight='0'>
<table width=800 cellpadding=0 cellspacing=0 border=0 >
<!-------------------- 타이틀 출력 --------------------------->
<tr align=top>
<td>
타이틀 지정
</td>
</tr>
<tr>
<td>
<table width=800 border=0 cellpadding=0 cellspacing=0>
<!---------------------- 아웃로그인 --------------------------->
<tr>
<td><? include "$cfg[url]/outlogin.php"; ?></td>
</tr>
<!---------------------- 메뉴 출력 ---------------------------->
<tr>
<td><a href="http://111.111.111.111/~ccc/메뉴1.html">메뉴1</a></td>
<td><a href="http://111.111.111.111/~ccc/메뉴2.html">메뉴1</a></td>
<td><a href="http://111.111.111.111/~ccc/메뉴3.html">메뉴1</a></td>
<td><a href="http://111.111.111.111/~ccc/메뉴4.html">메뉴1</a></td>
</tr>
</table>
</td>
</tr>
<tr >
<td>
<!-------------------- 최신글 출력 --------------------------->
<table width=800 border=0 cellpadding=0 cellspacing=0 valign=top>
<tr >
<td><? newlist('login_skin', 'free1', '자유1', 5, 35); ?></td>
<td><? newlist('login_skin', 'free2', '자유2', 5, 35); ?></td>
</tr>
<tr >
<td><? newlist('login_skin', 'free3', '자유3', 5, 35); ?></td>
<td><? newlist('login_skin', 'free4', '자유4', 5, 35); ?></td>
</tr>
<tr >
<td><? newlist('login_skin', 'pic1', '겔러리1', 5, 35); ?></td>
<td><? newlist('login_skin', 'pic2', '겔러리2', 5, 35); ?></td>
</tr>
</table>
</td>
</tr>
<tr>
<table width=800 height=30 border=1 cellpadding=0 cellspacing=0>
<tr>
<td align="center"><b>저작권 표시<b></td>
</tr>
</table>
</tr>
</table>
</body>
</html>
//###########################################################################
//# http://111.111.111.111/~ccc/lib.inc.php 의 파일 내용
//###########################################################################
<?
// 상대경로
$reldir = "./gnu2";
require_once "$reldir/lib.inc.php";
?>
// 이 상대 경로는 주는 이유는 index.html에서 require_once "gnu2/lib.inc.php이렇게 선언하면
변수값이 넘어오지않아서 외부로그인 스킨이 제대로 작동하지 않는다.
//###########################################################################
//# http://111.111.111.111/~ccc/outlogin.php 의 파일 내용
//###########################################################################
<?
/*---------------------------
** 외부로그인 **
---------------------------*/
require_once "./lib.inc.php";
$게시판 = $bo_table;
$아이디 = $member[mb_id];
$이름 = $member[mb_name];
$포인트 = $member[mb_point];
$레벨 = $member[mb_level];
$아웃스킨경로 = "$cfg[url]/$cfg[dir_skin]/";
// $아웃스킨 = 'ryl_login';
if ($member[mb_id]) { // 로그인 중이라면
require_once "gnu2/skin/ryl_login/outlogin1.skin.php";
} else { // 로그아웃 중이라면
require_once "gnu2/skin/ryl_login/outlogin2.skin.php";
}
unset($temp);
// 사실 아웃로그인스킨은 고정값이기때문에 변수처리를 할려다가 고정값으로 변경했다.
?>
//###########################################################################
//# http://111.111.111.111/~ccc/gnu2/skin/ryl_login/outlogin1.skin.php 의 파일 내용
//###########################################################################
<table border=0 cellpadding=0 cellspacing=0>
<tr>
<td background='<? echo "$아웃스킨경로$아웃스킨" ?>/images/outllogin1_01.gif' width=164 height=19 style='font-size:9pt; font-family:굴림; color:#FFFFFF;'>
<? echo "이름:$이름($포인트)" ?></td>
<td width=22 height=19>
<input type=image value='로그아웃' onclick='location="<?=$cfg[url]?>/mblogout.php";' src='<? echo "$아웃스킨경로$아웃스킨" ?>/images/outllogin1_02.gif' align=absmiddle> </td>
<td background='<? echo "$아웃스킨경로$아웃스킨" ?>/images/outllogin1_03.gif' width=9 height=19 ></td>
<td width=22 height=19>
<input type=image value='정보수정' onclick="outsidembform('<? echo $게시판 ?>')" src='<? echo "$아웃스킨경로$아웃스킨" ?>/images/outllogin1_04.gif' align=absmiddle></td>
<td>
<img src='<? echo "$아웃스킨경로$아웃스킨" ?>/images/outllogin1_05.gif' width=9 height=19 ></td>
<td background='<? echo "$아웃스킨경로$아웃스킨" ?>/images/outllogin1_06.gif' width=22 height=19>
<?
if ($member[mb_level] >= $cfg[level_max]) {
echo "<a href='{$cfg[url]}/manage/' target=_black><img src='$아웃스킨경로$아웃스킨/images/outllogin1_06.gif' width=22 height=19 border=0 align=absmiddle></a>";
} else {
echo "<a href='javascript:mbleave('$게시판');'><img src='$아웃스킨경로$아웃스킨/images/outllogin1_06.gif' width=22 height=19 border=0 align=absmiddle></a>";
} ?>
</td>
</tr>
</table>
<script language='javascript'>
function outsidembform(bo_table)
{
window.open('<?=$cfg[url]?>/mbform.php?w=u&gb_table='+bo_table, '회원정보수정', 'left=10,top=10,width=550,height=600,scrollbars=yes');
}
function mbleave(bo_table)
{
if (confirm('회원 탈퇴 {회원탈퇴대기일}일 후 {회원아이디}님의 모든 자료가 삭제됩니다.\n\n정말 회원을 탈퇴하시겠습니까?')) {
location = '<?=$cfg[url]?>/mbleave.php{uc1}bo_table{uc2}' + bo_table;
}
}
</script>
//###########################################################################
//# http://111.111.111.111/~ccc/gnu2/skin/ryl_login/outlogin2.skin.php 의 파일 내용
//###########################################################################
<? echo "
<table border=0 cellpadding=0 cellspacing=0>
<form name=outsideloginform method=post action='{$cfg[url]}/mblogincheck.php' onsubmit='return outsideloginformcheck(this)' autocomplete='off'>
<input type='hidden' name='bo_table' value='$게시판'>
<tr>
<td background='$아웃스킨경로$아웃스킨/images/outlogin_01.gif' width=21 height=19></td>
<td background='$아웃스킨경로$아웃스킨/images/outlogin_02.gif' width=59 height=19 ><input type=text name=mb_id size=10 style='font-family:tahoma;font-size:7pt'></td>
<td background='$아웃스킨경로$아웃스킨/images/outlogin_03.gif' width=21 height=19></td>
<td background='$아웃스킨경로$아웃스킨/images/outlogin_04.gif' width=58 height=19 ><input type=password name=mb_passwd size=10 style='font-family:tahoma;font-size:7pt'></td>
<td background='$아웃스킨경로$아웃스킨/images/outlogin_05.gif' width=16 height=19></td>
<td width=18 height=19 >
<input name='outsideloginformcheck' type=image src='$아웃스킨경로$아웃스킨/images/outlogin_06.gif' border=0 align=absmiddle></td>
<td background='$아웃스킨경로$아웃스킨/images/outlogin_07.gif' width=5 height=19></td>
<td width=29 height=19 >
<a href='JavaScript:mbformopen();'><img src='$아웃스킨경로$아웃스킨/images/outlogin_08.gif' border=0 align=absmiddle></a></td>
<td background='$아웃스킨경로$아웃스킨/images/outlogin_09.gif' width=3 height=19></td>
<td ><a href='$cfg[url]/mbpasswdforget.php'><img src='$아웃스킨경로$아웃스킨/images/outlogin_10.gif' border=0 align=absmiddle></a></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> "
?>
//###########################################################################
//# http://111.111.111.111/~ccc/userlib.inc.php의 파일 내용
//###########################################################################
<?
// 새글 추출
function newlist($skins, $bo_table, $subject, $rows, $subjectlen='')
{
global $cfg;
$sql = " select * from $cfg[table_board] where bo_table = '$bo_table' ";
$bd = sql_fetch_array($sql);
if ($subjectlen == '') $subjectlen = $bd[bo_subject_len];
$cfg[board_table_prefix] = "gb_write_"; // 게시판 테이블의 접두사
$cfg[url] = "http://111.111.111.111/~ccc/gnu2"; // 사실 이부분은 이후로 config.inc.php에서 설정하기때문에 필요없지만 적어본다.
$skindir = "$cfg[url]/skin/$skins";
$skinimg = "$skindir/images";
include "./gnu2/skin/$skins/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='$skinimg/icon_file.gif' align=absmiddle>";
$icon_link = "";
if ($row[wr_link1] || $row[wr_link2])
$icon_link = "<img src='$skinimg/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='$skinimg/icon_new.gif' align=absmiddle>";
$icon_hot = "";
if ($row[wr_hit] >= $bd[bo_hot])
$icon_hot = "<img src='$skinimg/icon_hot.gif' align=absmiddle>";
$icon_battle = "";
if ($row[wr_commentcnt] >= $bd[bo_battle])
$icon_battle = "<img src='$skinimg/icon_battle.gif' align=absmiddle>";
$icon_secret = "";
if ($row[wr_secret])
$icon_secret = "<img src='$skinimg/icon_secret.gif' align=absmiddle>";
$wr_commentcnt = ($row[wr_commentcnt]) ? $row[wr_commentcnt] : null;
$wr_subject = get_text(cut_str($row[wr_subject], $subjectlen, '…'));
$wr_content = get_text(cut_str($row[wr_content], 400, '....[계속]'));
$wr_id = $row[wr_id];
$wr_name = $row[wr_name];
$wr_datetime = $row[wr_datetime];
include "./gnu2/skin/$skins/newlist_main.skin.php";
}
mysql_free_result($result);
}
// 최신그림 추출
function newpic($skins, $bo_table, $subject, $rows, $subjectlen='')
{
global $cfg;
$sql = " select * from $cfg[table_board] where bo_table = '$bo_table' ";
$bd = sql_fetch_array($sql);
if ($subjectlen == '') $subjectlen = $bd[bo_subject_len];
$cfg[board_table_prefix] = "gb_write_"; // 게시판 테이블의 접두사
$cfg[url] = "http://111.111.111.111.111/~ccc/gnu2";
$skindir = "$cfg[url]/skin/$skins";
$skinimg = "$skindir/images";
$filedir = "$cfg[url]/data/file";
include "./gnu2/skin/$skins/newpic_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='$skinimg/icon_file.gif' align=absmiddle>";
$icon_link = "";
if ($row[wr_link1] || $row[wr_link2])
$icon_link = "<img src='$skinimg/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='$skinimg/icon_new.gif' align=absmiddle>";
$icon_hot = "";
if ($row[wr_hit] >= $bd[bo_hot])
$icon_hot = "<img src='$skinimg/icon_hot.gif' align=absmiddle>";
$icon_battle = "";
if ($row[wr_commentcnt] >= $bd[bo_battle])
$icon_battle = "<img src='$skinimg/icon_battle.gif' align=absmiddle>";
$icon_secret = "";
if ($row[wr_secret])
$icon_secret = "<img src='$skinimg/icon_secret.gif' align=absmiddle>";
$wr_commentcnt = ($row[wr_commentcnt]) ? $row[wr_commentcnt] : null;
$wr_subject = get_text(cut_str($row[wr_subject], $subjectlen, '…'));
$wr_content = get_text(cut_str($row[wr_content], 400, '....[계속]'));
$wr_id = $row[wr_id];
$wr_name = $row[wr_name];
$wr_datetime = $row[wr_datetime];
$wr_images = $row[wr_file1];
$temp_tr = false;
if ($i > 0 && ($i % 5 == 0)) $temp_tr = true;
echo "
<td valign=top>
<table width=100%>
<tr>
<td align=center> ";
if ($wr_images) {
echo "
<a href='{$cfg[url]}/gbview.php?bo_table={$bo_table}&wr_id={$wr_id}'>
<img src='{$filedir}/{$wr_images}' width=110 height=80 border=0> </a> ";
}
echo "
</td>
</tr>
</table>
</td> ";
include "http://111.111.111.111/~ccc/gnu2/skin/$skins/newpic_main.skin.php";
}
mysql_free_result($result);
echo "</tr></table>";
}
?>
// 이 usrlib.inc.php부분은 최신글, 최신그림추출부분입니다. 이부분에 해당되는건 박갑성님 수정버젼사용하셔도 좋습니다. skin파일도 마찬가지입니다.
외부로그인을 위한 파일 수정 처리작업
//###########################################################################
//# http://111.111.111.111/~ccc/gnu2/config.inc.php 의 파일 내용
//###########################################################################
<?
$cfg[url] = "http://111.111.111.111/~ccc/gnu2";
//이걸 선언한건 스킨부분에서 처리를 위해서 넣었습니다. 또한 실행을 하다보면 전혀 다른곳으로
가는 경우가 있으신분들이 있을겁니다. 그이유는 현재폴더에서 모든 그누php파일을 찾게되어
있는데 만약에 그누보드를 include하여서 사용하는경우 전혀 다른곳에서 그누보드 php파일을
찾게 됨으로서 에러를 잃으키는걸 방지하기 위해서 여기서 선언을하고
gblist.php, gbview.php, 등등 링크부분에서 ./gblist.php 이런씩으로 되어있는곳을
$cfg[url]/gblist.php이런식으로 선언하여 절대값으로 변경함으로써 오작동을 방지합니다.
/*
** 테이블 명
*/
$cfg[table_default] = "gb_default"; // 기본환경설정 테이블
$cfg[table_group] = "gb_group"; // 그룹 설정 테이블
$cfg[table_board] = "gb_board"; // 게시판 설정 테이블
$cfg[table_login] = "gb_login"; // 로그인 테이블 (접속자수)
$cfg[table_member] = "gb_member"; // 회원 테이블
$cfg[table_memo] = "gb_memo"; // 메모 테이블
$cfg[table_zip] = "gb_zip"; // 우편번호 테이블
$cfg[table_vote] = "gb_vote"; // 투표 테이블
/*
** 디렉토리
*/
$cfg[dir_data] = "data";
$cfg[dir_file] = "$cfg[dir_data]/file";
$cfg[dir_session] = "$cfg[dir_data]/session";
$cfg[dir_member] = "$cfg[dir_data]/member"; // 회원아이콘 저장 디렉토리
$cfg[dir_skin] = "skin";
$cfg[dir_manage] = "manage";
$cfg[dir_image] = "image";
/*
** 권한
*/
$cfg[level_max] = 10; // 권한 최대값 (최고 관리자가 아님)
$cfg[level_register] = 2; // 회원가입시 기본 설정 권한
$cfg[level_guest] = 1; // 방문객 기본 권한
/*
** 기타
*/
$cfg[write_table_prefix] = "gb_write_"; // 게시판 테이블의 접두사
$cfg[link_count] = 2; // 링크의 필드 갯수
$cfg[file_count] = 2; // 업로드 파일의 필드 갯수
$cfg[image_extension] = "/(\.png|\.gif|\.jp[e]?g)$/i"; // bmp는 용량이 크므로 생략
$cfg[flash_extension] = "/(\.swf)$/i"; // 플래쉬
$cfg[movie_extension] = "/(\.as[x|f]+|\.wm[v|a]+|\.mp[e]?g|\.mov|\.avi|\.mp3)$/i"; // 동영상
$cfg[large_image_size] = 580; // 이 수치가 넘어가면 이 수치로 게시판 이미지 크기 고정
$cfg[search_section] = 10000; // 검색시 설정값 단위로 검색
$cfg[reply_max] = 10; // 답변은 설정값 단계 까지만
$cfg[login_minutes] = 3; // 분(설정값) 이내의 접속만 현재 접속자로 인정
?>
//###########################################################################
//# http://111.111.111.111/~ccc/gnu2/mblogincheck.php의 파일 내용
//###########################################################################
<?
require_once "./lib.inc.php";
$mb = get_member($mb_id);
// 가입된 회원이 아니다. 암호가 틀리다. 라는 메세지를 따로 보여주지 않는 이유는
// 회원아이디를 입력해 보고 맞으면 또 암호를 입력해보는 경우를 방지하기 위해서임.
// 불법사용자의 경우 회원아이디가 틀린지, 암호가 틀린지를 알기까지는 많은 시간이 소요됨.
if ((!$mb[0]) || (sql_password($mb_passwd) != $mb[mb_passwd])) {
alert("가입된 회원이 아니거나 암호가 틀립니다.\\n\\n암호는 대소문자를 구분합니다.");
}
// 차단된 아이디인가?
if ($mb[mb_intercept_date] && $mb[mb_intercept_date] <= date("Ymd")) {
$date = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\1년 \\2월 \\3일", $mb[mb_intercept_date]);
alert("회원님의 아이디는 접근이 금지되어 있습니다.\\n\\n처리일 : $date");
}
// 탈퇴한 아이디인가?
if ($mb[mb_leave_date] && $mb[mb_leave_date] <= date("Ymd")) {
$date = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\1년 \\2월 \\3일", $mb[mb_leave_date]);
alert("탈퇴한 아이디이므로 접근하실 수 없습니다.\\n\\n탈퇴일 : $date");
}
// 세션에 저장
$ss_mb_id = $mb[mb_id];
session_register("ss_mb_id");
if (substr($mb[mb_today_login], 0, 10) != $today) {
insert_point($mb[mb_id], $default[de_login_point]);
}
$sql = " update $cfg[table_member] set mb_today_login = NOW() where mb_id = '$mb_id' ";
sql_query_error($sql);
if ($url) {
//if (preg_match("/manage/", $url))
$link = $url;
} else {
$outlog1 = ""; // 여길처리해야 로그인체크후 홈디렉토리로 갑니다.안하면
if ($mb_id) { // 그누보드설치디렉토리로 이동합니다. 그리고 정지 끝 *^^*
$link = "../";
$outlog1 = "1"; //이 변수를 사용하지 않으면 홈계정에서는 로그오프체크를 못합니다.
} else {
$link = "$cfg[url]/";
}
}
header("location:$link");
?>
//###########################################################################
//# http://111.111.111.111/~ccc/gnu2/mblogout.php의 파일 내용
//###########################################################################
<?
require_once "./lib.inc.php";
// 세션에서 회원아이디 삭제
session_unregister("ss_mb_id");
if ($url) {
$link = $url;
} else if ($bo_table) {
$link = "./gblist.php?bo_table=$bo_table";
} else {
// ####### 수정후 ##########
if ($outlog1 = 1) {
$link = "../";
} else {
$link = "$cfg[url]/";
}
}
header("location:$link");
?>
이것으로 외부로그인, 최신글추출 및 기타사항이 끝났습니다. 마지막으로
_head.php, _foot.php 파일 수정이 남았습니다.
이 두개의 파일은 그누보드 설치후 보시는 화면의 왼족메뉴와 위쪽메뉴에 해당하는 부분입니다.
//###########################################################################
//# http://111.111.111.111/~ccc/gnu2/_head.php의 파일 내용
//###########################################################################
<?
$head_include = false;
if ($default[de_include_head] && file_exists("$default[de_include_head]")) {
require_once "$default[de_include_head]";
$head_include = true;
}
echo $default[de_content_head];
if ($group[gr_include_head] && file_exists("$group[gr_include_head]")) {
require_once "$group[gr_include_head]";
$head_include = true;
}
echo $group[gr_content_head];
if ($board[bo_include_head] && file_exists("$board[bo_include_head]")) {
require_once "$board[bo_include_head]";
$head_include = true;
}
echo $board[bo_content_head];
if ($head_include) {
echo "<link rel='stylesheet' href='$dir/style.skin.css' type='text/css'>";
return;
}
$document_title = $default[de_subject];
if ($html_subject)
$document_title .= " > $html_subject";
?>
<link rel='stylesheet' href='<?=$cfg[url]?>/style.css' type='text/css'>
<link rel='stylesheet' href='<?=$cfg[url]?>/wrest.css' type='text/css'>
<link rel='stylesheet' href='<?=$dir?>/style.skin.css' type='text/css'>
<!-- 상단 책갈피 -->
이부분까지는 노프레임을 만들때(상단메뉴부분을 읽어들이는 부분입니다.
아래부분은 순수하게 모두다 왼쪽메뉴(게시판, 현재접속자, 현재가입자)와 위쪽메뉴를 나타내는 부분입니다.) 자기가 원하는 스타일로 만드고 싶을때는 과감히 삭제하시는게 좋습니다.
//###########################################################################
//# http://111.111.111.111/~ccc/gnu2/_foot.php의 파일 내용
//###########################################################################
<?
$tail_include = false;
echo $board[bo_content_tail];
if ($board[bo_include_tail] && file_exists("$board[bo_include_tail]")) {
require_once "$board[bo_include_tail]";
$tail_include = true;
}
echo $group[gr_content_tail];
if ($group[gr_include_tail] && file_exists("$group[gr_include_tail]")) {
require_once "$group[gr_include_tail]";
$tail_include = true;
}
echo $default[de_content_tail];
if ($default[de_include_tail] && file_exists("$default[de_include_tail]")) {
require_once "$default[de_include_tail]";
$tail_include = true;
}
if ($tail_include) return;
?>
<script language='JavaScript' src='<?=$cfg[url]?>/wrest.js'></script>
이부분까지는 하단 읽어들이는 부분입니다.
실질적으로 현 디자인은 어찌보면 운영자님이 계획하신 설정메뉴에 상단, 하단 파일첨가에 맞지 않는 화면디자인입니다. 이 _head.php자체가 그 역활을 하고 있기 때문입니다.
홈페이지를 작성하실분은 둘중에 하나는 포기하셔야할겁니다.
게시판설정상태에서 상단,하단파일첨가를 사용안하실려면 _head.php상에서 모든걸 만들어주셔야하고
그게 아니라면 상단, 하단파일첨가에서 설정하시고 _head,php상의 html부분은 전부 삭제를 하셔야할겁니다.
전체 노프레임부분까지 구현 소스를 올려드리면 좋겠지만 여기까지만 하겠습니다. 조금 소스를 보시고 분석도 해보시고 연구도좀 해보시기를 권해드립니다.
p.s : 저도 님들과 같은 아주 초짜라는걸 알아주시길 바라며....
의문사항은 리플을.... 글을 잘적어서그러나 제가 올린글에는 거의 대부분 리플이 없군요...*^^*
추천
11
11
댓글 전체
여전히 어렵다 ㅜ.ㅜ
구조가 이해가 안된다는 ;;;
구조가 이해가 안된다는 ;;;
감사합니다.
자세한 설명 고맙습니다. 그런데 나는 왜이리 안되는지....쩝~
outlogin1.skin.php / outlogin2.skin.php 말인데요. "$아웃스킨경로$아웃스킨"게 된부분 말인데요. 이건 outlogin.php에 선언이 되어 있기 때문에 그냥하면 되는건지 아니면 바꿔야 하는건지 모르겠네요.
그리고 경로부분 말인데요.(http://www.test.com/index.html , http://www.test.com/outlogin.php 부분)
$cfg[url] = "http://www.test.com/gnu2" 이런식으로 선언이 되어있는데 index.html부분에서 <? include "$cfg[url]/outlogin.php"; ?>이렇게 되면 경로에 문제가 되는거 아닌가요?
그리고 하나더요.
Parse error: parse error in /home1/h/aaa/html/lib.inc.php on line 17 이런 에러가 뜹니다.
아래 부분인듯 싶은데. 그런데 아래부분을 보면요 분명 lib.inc.php는 index.html랑 같은위치 [gnu2]폴더안이 아니라 그 상위 에 위치하는데 아래경우는 [gnu2]폴더안을 의미하는거 아닌가요?
그리고 lib.inc.php라는 파일을 상위폴더로 끄집어 낸것 같은데...그럼 기존의 [gnu2]폴더안의 lib.inc.php파일은 없어도 괜찮은 건가요?
<?
// 상대경로
$reldir = "./gnu2";
require_once "$reldir/lib.inc.php";
?>
혼자하려니 너무 어렵습니다. 아시는 분 도와주세요.... 그럼 행복하세요...
outlogin1.skin.php / outlogin2.skin.php 말인데요. "$아웃스킨경로$아웃스킨"게 된부분 말인데요. 이건 outlogin.php에 선언이 되어 있기 때문에 그냥하면 되는건지 아니면 바꿔야 하는건지 모르겠네요.
그리고 경로부분 말인데요.(http://www.test.com/index.html , http://www.test.com/outlogin.php 부분)
$cfg[url] = "http://www.test.com/gnu2" 이런식으로 선언이 되어있는데 index.html부분에서 <? include "$cfg[url]/outlogin.php"; ?>이렇게 되면 경로에 문제가 되는거 아닌가요?
그리고 하나더요.
Parse error: parse error in /home1/h/aaa/html/lib.inc.php on line 17 이런 에러가 뜹니다.
아래 부분인듯 싶은데. 그런데 아래부분을 보면요 분명 lib.inc.php는 index.html랑 같은위치 [gnu2]폴더안이 아니라 그 상위 에 위치하는데 아래경우는 [gnu2]폴더안을 의미하는거 아닌가요?
그리고 lib.inc.php라는 파일을 상위폴더로 끄집어 낸것 같은데...그럼 기존의 [gnu2]폴더안의 lib.inc.php파일은 없어도 괜찮은 건가요?
<?
// 상대경로
$reldir = "./gnu2";
require_once "$reldir/lib.inc.php";
?>
혼자하려니 너무 어렵습니다. 아시는 분 도와주세요.... 그럼 행복하세요...
최신 ㅇㅣ미지가 두개씩 나오는 문제는
newpic_main_skin 파일을
<? if ($wr_images) { ?>
<a href='<?=$cfg[url]?>/gbview.php?bo_table=<?=$bo_table?>&wr_id=<?=$wr_id?>'>
</a>
<? } ?>
이렇게 바꾸면 됩니다.. 바꿨다기 보다..userlib.inc에서 한번 이미지 불러들이고 위에서 또 이미지 불러들이게 되어있더군요.
newpic_main_skin 파일을
<? if ($wr_images) { ?>
<a href='<?=$cfg[url]?>/gbview.php?bo_table=<?=$bo_table?>&wr_id=<?=$wr_id?>'>
</a>
<? } ?>
이렇게 바꾸면 됩니다.. 바꿨다기 보다..userlib.inc에서 한번 이미지 불러들이고 위에서 또 이미지 불러들이게 되어있더군요.
저기 ..님께서 힘이드셔도 넘 설명잘해주셔서 저같은 아니 많은 초보님들한테 많은 힘가 용기가 됬다고 생각합니다.
지금 하시는 일을 바로 "하나의 밀이 땅이 떨어져 자기 몸을 죽여 많은 사람의 양식으로 다시 태어고 한는것 같읍니다"....
약은 지금은 쓰지만 훗날 모든이의 건강으로 남을거외다.......
지금 생각하시는 일은 아마도 역사가 훗날 좋은 평가를 내릴겁니다...또한 이런 자리를 마려해 주신 www.sir.co.kr 관리자(주인) 분께 다시한번 감사드립니다....
지금 하시는 일을 바로 "하나의 밀이 땅이 떨어져 자기 몸을 죽여 많은 사람의 양식으로 다시 태어고 한는것 같읍니다"....
약은 지금은 쓰지만 훗날 모든이의 건강으로 남을거외다.......
지금 생각하시는 일은 아마도 역사가 훗날 좋은 평가를 내릴겁니다...또한 이런 자리를 마려해 주신 www.sir.co.kr 관리자(주인) 분께 다시한번 감사드립니다....
아참 이번 개인홈페이지 리널하면서 홈페이지 전체 소스변경한걸 한번 올려볼까합니다.
외부로그인 노프레임, 최신글, 최신그림, MSN이모티콘 적용 보드스킨등 전체적으로 제가 사용하고있는걸 전부 다 올려볼까합니다. *^^*
외부로그인 노프레임, 최신글, 최신그림, MSN이모티콘 적용 보드스킨등 전체적으로 제가 사용하고있는걸 전부 다 올려볼까합니다. *^^*
음.....머리가 복잡해서 머리회전은 전혀 안되고 해서 무협시리즈를 보고있네요*^^* 그누보드로 머리식힐겸 개인홈페이지 리널이나 해볼까하는데..쩝 디자인이 생각이 안나네요 ! *^^* 혹 저에게 물어보시더라도 답변이 상당히 늦을수 있습니다.
김장군님의 그림 2장씩 출력되는건 제가 한 화면에 한개만 출력하고 2개 이상 테스트를 안해봐서 에러가 있을수도 있습니다. 다시 테스트해보고 수정사항을 올려드리겠습니다.(사실은 스킨문제로 한동안 만지기가 싫어져서리...*^^*)
그리고 외부로그인에서 로그아웃하면 초기화일로 이동하신다고 하신건 mblogout.php에서
if ($outlog1 = 1) {
$link = "../"; //<---이부분과.
} else {
$link = "$cfg[url]/"; //<--이부분을 수정하시면됩니다. 여기서는 config.inc.php에서 설정했던
} // $cfg[url] = "http:/111.111.111.111/~ccc/gnu2/이렇게 수정되어있으니 이곳만
} // $link = "http://111.111.111.111/~ccc/main.html 이런씩으로 수정해주시면 해결될겁니다.
아참 로그인부분은 이상한곳으로 가실껀데 그곳도 마찬가지로 수정해주시면됩니다.
그리고 외부로그인에서 로그아웃하면 초기화일로 이동하신다고 하신건 mblogout.php에서
if ($outlog1 = 1) {
$link = "../"; //<---이부분과.
} else {
$link = "$cfg[url]/"; //<--이부분을 수정하시면됩니다. 여기서는 config.inc.php에서 설정했던
} // $cfg[url] = "http:/111.111.111.111/~ccc/gnu2/이렇게 수정되어있으니 이곳만
} // $link = "http://111.111.111.111/~ccc/main.html 이런씩으로 수정해주시면 해결될겁니다.
아참 로그인부분은 이상한곳으로 가실껀데 그곳도 마찬가지로 수정해주시면됩니다.
이해가 안되는건 죄가 아니라고 생각합니다.
이해를 할려고 시도를 안하는게 안좋은거지*^^* ---------->충고 정말 감사합니다.
참 진짜 친절하시다고 느겼어요....저가 한국에있었다면 밥이라도 한끼 사고 싶은 심정입니다다만.......다음에
다시 이해를 할려고 시도 해보겠읍니다....항상 좋은 답변 감사드립니다.
이해를 할려고 시도를 안하는게 안좋은거지*^^* ---------->충고 정말 감사합니다.
참 진짜 친절하시다고 느겼어요....저가 한국에있었다면 밥이라도 한끼 사고 싶은 심정입니다다만.......다음에
다시 이해를 할려고 시도 해보겠읍니다....항상 좋은 답변 감사드립니다.
한가지만더요
외부로그인에서 로그아웃하면 초기화일로 이동이되네요
저는 main.html이 메인홈인데 로그아웃해도 그페이지에 머물게
할수는 없나요 ?
외부로그인에서 로그아웃하면 초기화일로 이동이되네요
저는 main.html이 메인홈인데 로그아웃해도 그페이지에 머물게
할수는 없나요 ?
저는 이렇게 했는데 잘 됨니다.
경로문제
userlib.inc.php화일에 include부분이 두군데 있는데
첫번째 부분 은
include "./skin/$skins/newpic_head.skin.php";
두번째부분은
include "./skin/$skins/newpic_main.skin.php";
이렇게 지정 하고
<!-------------------- 최신글 출력 -------------------------->
부분은
<? newpic('login_skin', 'pic1', '겔러리1', 3, 35); ?>
이렇게 했어요
문제는 똑같은 그림이 2장 씩 출력이 됩니다.
저도 초보라 한장만 출력되라고 이것 지워보고 저것지워보고 해도 해결이 안되네요 해결 방법 없나요?
ccc님 감사함니다 ^ ^
경로문제
userlib.inc.php화일에 include부분이 두군데 있는데
첫번째 부분 은
include "./skin/$skins/newpic_head.skin.php";
두번째부분은
include "./skin/$skins/newpic_main.skin.php";
이렇게 지정 하고
<!-------------------- 최신글 출력 -------------------------->
부분은
<? newpic('login_skin', 'pic1', '겔러리1', 3, 35); ?>
이렇게 했어요
문제는 똑같은 그림이 2장 씩 출력이 됩니다.
저도 초보라 한장만 출력되라고 이것 지워보고 저것지워보고 해도 해결이 안되네요 해결 방법 없나요?
ccc님 감사함니다 ^ ^
질문요.. 전요.. 최근 이미지를 출력하려구 하는데요..
이미지는 출력안되고 글자만 나오네요...
이미지는 출력안되고 글자만 나오네요...
이해가 안되는건 죄가 아니라고 생각합니다.
이해를 할려고 시도를 안하는게 안좋은거지*^^*
설명입니다.
<? newlist('login_skin', 'free1;, '자유1', 5, 35); ?>
'login_skin' <--스킨 폴더를 말합니다. http://111.111.111.111/~ccc/gnu2/skin/login_skin <--이런씩에서
최신글추츨하는 스킨폴더위치를 말합니다.
'free1' <-- 이건 게시판명을 말합니다. 게시판만들때 영문으로 만드셨죠 그 이름을 말합니다.
'자유1' <---이건 최신글추출 타이틀에 보이는 이름입니다.(임의로 적으셔도 됩니다.)
5 <--최근에 등록되어있는 글 5개를 가져와라는 겁니다. (임의 수정가능)
35 <-- 제목길이가 넘어갈경우 한 한줄에 안보이고 다음줄로 넘어가서 보기 안좋게 나옵니다. 이럴경우
35자 까지만 보이고 그 이상은 잘라서 보여라는 말입니다.(임의 수정가능)
겔러리도 똑같습니다.
이해를 할려고 시도를 안하는게 안좋은거지*^^*
설명입니다.
<? newlist('login_skin', 'free1;, '자유1', 5, 35); ?>
'login_skin' <--스킨 폴더를 말합니다. http://111.111.111.111/~ccc/gnu2/skin/login_skin <--이런씩에서
최신글추츨하는 스킨폴더위치를 말합니다.
'free1' <-- 이건 게시판명을 말합니다. 게시판만들때 영문으로 만드셨죠 그 이름을 말합니다.
'자유1' <---이건 최신글추출 타이틀에 보이는 이름입니다.(임의로 적으셔도 됩니다.)
5 <--최근에 등록되어있는 글 5개를 가져와라는 겁니다. (임의 수정가능)
35 <-- 제목길이가 넘어갈경우 한 한줄에 안보이고 다음줄로 넘어가서 보기 안좋게 나옵니다. 이럴경우
35자 까지만 보이고 그 이상은 잘라서 보여라는 말입니다.(임의 수정가능)
겔러리도 똑같습니다.
죽으면 늙어야해...잘 이해가...죄송합니다. 질문이에요
1. 메뉴출력에서 메뉴1 부터 4 까지 html 화일을 만들고 나서 <----최신글 출력---> 부분에서 <td><? newlist('login_skin', 'free1', '자유1', 5, 35); ?></td> 에서요 free1 은 뭐구.....자유1은...뭐고 5 는 뭐고.......35 는 뭐에요 ?
2. <td><? newlist('login_skin', 'pic1', '겔러리1', 5, 35); ?></td> 에서 pic1 은 뭐구 게럴리1 은 뭐구.... 5 은 뭐고........ 35 는 뭔지 확실하게 모릅니다....한수 더 부탁 드립니다.....
1. 메뉴출력에서 메뉴1 부터 4 까지 html 화일을 만들고 나서 <----최신글 출력---> 부분에서 <td><? newlist('login_skin', 'free1', '자유1', 5, 35); ?></td> 에서요 free1 은 뭐구.....자유1은...뭐고 5 는 뭐고.......35 는 뭐에요 ?
2. <td><? newlist('login_skin', 'pic1', '겔러리1', 5, 35); ?></td> 에서 pic1 은 뭐구 게럴리1 은 뭐구.... 5 은 뭐고........ 35 는 뭔지 확실하게 모릅니다....한수 더 부탁 드립니다.....
정말 박전도사님 말대로 참 자상하신군요..감사합니다...
이다음에 어떤사람이 와이프가 될찌 행복.............
이다음에 어떤사람이 와이프가 될찌 행복.............
//###########################################################################
//# http://111.111.111.111/~ccc/outlogin.php 의 파일 내용 <---요게 파일명을 말합니다.
//###########################################################################
// 요 아래서부터 그래로 복사하셔서 outlogin.php파일로 저장하시면 되는겁니다. *^^*
outgin1.skin.php도 마찬가지입니다. 단 디렉토리는 만드셔야겠죠 *^^*
<?
/*---------------------------
** 외부로그인 **
---------------------------*/
require_once "./lib.inc.php";
$게시판 = $bo_table;
$아이디 = $member[mb_id];
$이름 = $member[mb_name];
$포인트 = $member[mb_point];
$레벨 = $member[mb_level];
$아웃스킨경로 = "$cfg[url]/$cfg[dir_skin]/";
// $아웃스킨 = 'ryl_login';
if ($member[mb_id]) { // 로그인 중이라면
require_once "gnu2/skin/ryl_login/outlogin1.skin.php";
} else { // 로그아웃 중이라면
require_once "gnu2/skin/ryl_login/outlogin2.skin.php";
}
unset($temp);
// 사실 아웃로그인스킨은 고정값이기때문에 변수처리를 할려다가 고정값으로 변경했다.
?>
//# http://111.111.111.111/~ccc/outlogin.php 의 파일 내용 <---요게 파일명을 말합니다.
//###########################################################################
// 요 아래서부터 그래로 복사하셔서 outlogin.php파일로 저장하시면 되는겁니다. *^^*
outgin1.skin.php도 마찬가지입니다. 단 디렉토리는 만드셔야겠죠 *^^*
<?
/*---------------------------
** 외부로그인 **
---------------------------*/
require_once "./lib.inc.php";
$게시판 = $bo_table;
$아이디 = $member[mb_id];
$이름 = $member[mb_name];
$포인트 = $member[mb_point];
$레벨 = $member[mb_level];
$아웃스킨경로 = "$cfg[url]/$cfg[dir_skin]/";
// $아웃스킨 = 'ryl_login';
if ($member[mb_id]) { // 로그인 중이라면
require_once "gnu2/skin/ryl_login/outlogin1.skin.php";
} else { // 로그아웃 중이라면
require_once "gnu2/skin/ryl_login/outlogin2.skin.php";
}
unset($temp);
// 사실 아웃로그인스킨은 고정값이기때문에 변수처리를 할려다가 고정값으로 변경했다.
?>
질문이요? (손들고 있읍니다)
1. //# http://111.111.111.111/~ccc/outlogin.php 의 파일 내용 ----> 이 php 가 없는데 만들어요? 아님 ryl_login 스킨이라는데 같이 들어 있어요?
2. http://111.111.111.111/~ccc/gnu2/skin/ryl_login/outlogin1.skin.php 의 파일 내용 ---> 이라고 했는데 ryl_login 은 어디에 있는 스킨이에요?
1. //# http://111.111.111.111/~ccc/outlogin.php 의 파일 내용 ----> 이 php 가 없는데 만들어요? 아님 ryl_login 스킨이라는데 같이 들어 있어요?
2. http://111.111.111.111/~ccc/gnu2/skin/ryl_login/outlogin1.skin.php 의 파일 내용 ---> 이라고 했는데 ryl_login 은 어디에 있는 스킨이에요?
아주 훌륭한 일을 하셨읍니다...많은 도움이 됬읍니다. 감사합니다....
^^;; thanks
ⓒⓒⓒ//참 자상하게 글을 올리셨군요.......코멘트 없음에 넘 맘 아파하지 마세요..... 이바닥 생리가 그런 것 같더군요......*^^* 힘내시고 유용한 글 많이 올려 주세요.......파이링......*^^*
감사합니다