버전 3.29
3.29 Patch (2004.3.24)
- 이름에 ' 가 입력되면 출력시 자바스크립트 오류 발생
lib/gnuboard.lib.php 의 gblayer() 함수 수정
bbs/gbview.php 의 get_text(cut_str($write[wr_name],20)) 을 cut_str($write[wr_name],20) 로 수정
- 자동로그인시 로그인 포인트를 부여하지 않는 오류를 수정
index.php
---------------------------------------------------------------------------------
수정된 부분
---------------------------------------------------------------------------------
lib/gnuboard.lib.php 의 gblayer() 함수
// 쪽지 레이어
function gblayer($mb_id, $name='', $email='', $homepage='', $open=0)
{
global $cfg;
static $layerno = 0;
$layerno++;
$email = preg_replace("/@/", "@", $email);
$homepage = set_http($homepage);
$profile = 1;
$str = "<span onmousedown=\"gblayeraction(event, 'gblayer{$layerno}', 'visible')\" style='cursor:hand;'>";
if ($mb_id) {
$icon_file = "./data/member/$mb_id.gif";
if (file_exists($icon_file) && is_file($icon_file)) {
$size = getimagesize($icon_file);
$width = $size[0];
$height = $size[1];
if ($width > $cfg[mb_icon_width]) {
$width = $cfg[mb_icon_width];
}
if ($height > $cfg[mb_icon_height]) {
$height = $cfg[mb_icon_height];
}
$str .= "<img src='$icon_file' width='$width' height='$height' align=absbottom alt='$mb_id'> ";
}
$str .= "<span title='$mb_id'><span class=name>$name</span></span>";
/*
// 정보 비공개
if (!$open) {
$mb_id = "";
$email = "";
$homepage = "";
} else {
$profile = 1;
}
*/
} else {
$str .= $name;
}
$str .= "</span>";
// 3.29
$name = preg_replace("/\"/", """, $name);
$name = preg_replace("/\'/", "", $name);
$str .= "<script language='JavaScript'>gblayer('gblayer{$layerno}', '{$mb_id}', '{$name}', '{$email}', '{$homepage}', '{$profile}', './bbs');</script>";
return $str;
}
---------------------------------------------------------------------------------
bbs/gbview.php 의 115 라인
// 3.29
//$name = gblayer($write[mb_id], get_text(cut_str($write[wr_name],20)), $write[wr_email], $write[wr_homepage]);
$name = gblayer($write[mb_id], cut_str($write[wr_name],20), $write[wr_email], $write[wr_homepage]);
$datetime = $write[wr_datetime];
$hit = $write[wr_hit];
$good = $write[wr_good];
$nogood = $write[wr_nogood];
---------------------------------------------------------------------------------
index.php 의 133 라인
$sql = " select mb_passwd, mb_intercept_date, mb_leave_date, mb_today_login
from $cfg[table_member] where mb_id = '$tmp_mb_id' ";
$row = sql_fetch($sql);
$key = md5($_SERVER[SERVER_ADDR] . $_SERVER[REMOTE_ADDR] . $_SERVER[HTTP_USER_AGENT] . $row[mb_passwd]);
// 쿠키에 저장된 키와 같다면
$tmp_auto = $_COOKIE[ck_auto];
if ($tmp_auto == $key && $tmp_auto) {
// 차단 또는 탈퇴가 아니라면
if ($row[mb_intercept_date] == "" && $row[mb_leave_date] == "") {
// 3.29 begin --------------------------------------------
// 자동로그인일 경우 로그인 포인트 부여되지 않던 오류를 수정
// 오늘 처음 로그인 이라면
if (substr($row[mb_today_login], 0, 10) != $today) {
$sql = " update $cfg[table_member]
set mb_today_point = '0'
where mb_id = '$tmp_mb_id' ";
sql_query($sql);
insert_point($tmp_mb_id, $default[de_login_point], "$today 첫로그인");
}
// 회원테이블의 포인트와 포인트내역의 포인트 합계를 맞춘다
$sql= " select sum(po_point) from $cfg[table_point]
where mb_id = '$tmp_mb_id' ";
$po = sql_fetch($sql);
$sql = " update $cfg[table_member]
set mb_point = '$po[0]'
where mb_id = '$tmp_mb_id' ";
sql_query($sql);
unset($po);
// 최근 로그인일시 UPDATE
$sql = " update $cfg[table_member]
set mb_today_login = '$now',
mb_login_ip = '$_SERVER[REMOTE_ADDR]'
where mb_id = '$tmp_mb_id' ";
sql_query($sql);
// 3.29 end --------------------------------------------
// 세션에 회원아이디를 저장하여 로그인으로 간주
session_register("ss_mb_id");
$ss_mb_id = $_SESSION["ss_mb_id"] = $tmp_mb_id;
// 페이지를 재실행
echo "<script> window.location.reload(); </script>";
exit;
}
}
- 이름에 ' 가 입력되면 출력시 자바스크립트 오류 발생
lib/gnuboard.lib.php 의 gblayer() 함수 수정
bbs/gbview.php 의 get_text(cut_str($write[wr_name],20)) 을 cut_str($write[wr_name],20) 로 수정
- 자동로그인시 로그인 포인트를 부여하지 않는 오류를 수정
index.php
---------------------------------------------------------------------------------
수정된 부분
---------------------------------------------------------------------------------
lib/gnuboard.lib.php 의 gblayer() 함수
// 쪽지 레이어
function gblayer($mb_id, $name='', $email='', $homepage='', $open=0)
{
global $cfg;
static $layerno = 0;
$layerno++;
$email = preg_replace("/@/", "@", $email);
$homepage = set_http($homepage);
$profile = 1;
$str = "<span onmousedown=\"gblayeraction(event, 'gblayer{$layerno}', 'visible')\" style='cursor:hand;'>";
if ($mb_id) {
$icon_file = "./data/member/$mb_id.gif";
if (file_exists($icon_file) && is_file($icon_file)) {
$size = getimagesize($icon_file);
$width = $size[0];
$height = $size[1];
if ($width > $cfg[mb_icon_width]) {
$width = $cfg[mb_icon_width];
}
if ($height > $cfg[mb_icon_height]) {
$height = $cfg[mb_icon_height];
}
$str .= "<img src='$icon_file' width='$width' height='$height' align=absbottom alt='$mb_id'> ";
}
$str .= "<span title='$mb_id'><span class=name>$name</span></span>";
/*
// 정보 비공개
if (!$open) {
$mb_id = "";
$email = "";
$homepage = "";
} else {
$profile = 1;
}
*/
} else {
$str .= $name;
}
$str .= "</span>";
// 3.29
$name = preg_replace("/\"/", """, $name);
$name = preg_replace("/\'/", "", $name);
$str .= "<script language='JavaScript'>gblayer('gblayer{$layerno}', '{$mb_id}', '{$name}', '{$email}', '{$homepage}', '{$profile}', './bbs');</script>";
return $str;
}
---------------------------------------------------------------------------------
bbs/gbview.php 의 115 라인
// 3.29
//$name = gblayer($write[mb_id], get_text(cut_str($write[wr_name],20)), $write[wr_email], $write[wr_homepage]);
$name = gblayer($write[mb_id], cut_str($write[wr_name],20), $write[wr_email], $write[wr_homepage]);
$datetime = $write[wr_datetime];
$hit = $write[wr_hit];
$good = $write[wr_good];
$nogood = $write[wr_nogood];
---------------------------------------------------------------------------------
index.php 의 133 라인
$sql = " select mb_passwd, mb_intercept_date, mb_leave_date, mb_today_login
from $cfg[table_member] where mb_id = '$tmp_mb_id' ";
$row = sql_fetch($sql);
$key = md5($_SERVER[SERVER_ADDR] . $_SERVER[REMOTE_ADDR] . $_SERVER[HTTP_USER_AGENT] . $row[mb_passwd]);
// 쿠키에 저장된 키와 같다면
$tmp_auto = $_COOKIE[ck_auto];
if ($tmp_auto == $key && $tmp_auto) {
// 차단 또는 탈퇴가 아니라면
if ($row[mb_intercept_date] == "" && $row[mb_leave_date] == "") {
// 3.29 begin --------------------------------------------
// 자동로그인일 경우 로그인 포인트 부여되지 않던 오류를 수정
// 오늘 처음 로그인 이라면
if (substr($row[mb_today_login], 0, 10) != $today) {
$sql = " update $cfg[table_member]
set mb_today_point = '0'
where mb_id = '$tmp_mb_id' ";
sql_query($sql);
insert_point($tmp_mb_id, $default[de_login_point], "$today 첫로그인");
}
// 회원테이블의 포인트와 포인트내역의 포인트 합계를 맞춘다
$sql= " select sum(po_point) from $cfg[table_point]
where mb_id = '$tmp_mb_id' ";
$po = sql_fetch($sql);
$sql = " update $cfg[table_member]
set mb_point = '$po[0]'
where mb_id = '$tmp_mb_id' ";
sql_query($sql);
unset($po);
// 최근 로그인일시 UPDATE
$sql = " update $cfg[table_member]
set mb_today_login = '$now',
mb_login_ip = '$_SERVER[REMOTE_ADDR]'
where mb_id = '$tmp_mb_id' ";
sql_query($sql);
// 3.29 end --------------------------------------------
// 세션에 회원아이디를 저장하여 로그인으로 간주
session_register("ss_mb_id");
$ss_mb_id = $_SESSION["ss_mb_id"] = $tmp_mb_id;
// 페이지를 재실행
echo "<script> window.location.reload(); </script>";
exit;
}
}
첨부파일
|
댓글을 작성하시려면 로그인이 필요합니다.
댓글 57개
감기 조심하시구요..^^
즐겁고 상쾌한 하루 되세요!
bbs/gbview.php
index.php
이 파일 3개만 바꾸면 되는 건가요?? 아무튼 감사합니다~~
이제는 기능 자체의 업그레이드 보다는
버그패치쪽으로 완성도 높이는데 주력하시는거 같네요 ^^
잘 되는군요..
아무튼 신기 합니다^^
lib/gnuboard.lib.php.bak 파일이 자동 생성되었나 봅니다.
이 파일을 삭제하십시오.
이건 무슨에러 인지요?
수정해 놓았습니다.
원프로그램에서는 문제가 없습니다.
이줄에서 에러가 나네요.
심심한데 스킨이나 만들어 볼려구요. 아 요즘은 아이디어 부족으로 시달리고 있습니다.
그럼 계속 수고하세요.
저는 이상없이 실행 됩니다.
Fatal error: Call to undefined function: get_filesize() in /home/e-smith/files/primary/html/board/bbs/gbview.php on line 178
감사히 쓰겠습니다.
그누보드를 첨 알게 될때만 해도 이 게시판에 대해서 참 적응하는게 어려웠는데
이제는 어느 정도 알것 같네요...
잘 쓸게요...~~!!
3.3나오면 전체적인 업그레이드를 할 생각입니다.
즐겁고 상쾌한 하루 되세요!
조언 부탁드립니다.
감사합니다~
$name = preg_replace("/\"/", """, $name);
-> $name = preg_replace("/\"/", "", $name);
가 맞는 건가요?
바쁘다보니... 326에서 up을 못하고 있군요.
빨리 여유가 좀생겼으면 좋겠군요.
다른 컴퓨터 있는뎅 기냥 받았더마 .. 포인트 넘 많이 날라갔당... ^^
포인트 빨랑 회복해야지.. 다른 스킨도 받을수 있을꺼 같은뎅..