트랙백 기능에서 코드 에러좀 봐 주세요. 정보
트랙백 기능에서 코드 에러좀 봐 주세요.관련링크
본문
제 홈페이지에다 트랙백 기능을 보강했는데 그것은 내가 다른 글에 트랙백을 걸었을 때 상대글의 url이 댓글 처럼 붙게 하는 기능을 만들었습니다. 이건 제대로 되는데 마지막 수정 작업으로 $wr_trackback(여기서는 상대글 tb_url임)을 상대글 url로 변경하는 PHP 구분때문에 프로그램이 실행하다 멈추고 있음 (그 걸 주석 처리하면 제대로 작동) 어느 부분이 잘못되어 있는지 에러 좀 봐 주세요.
에러는 아래를 봐 주세요.
-----------------------------------------------------
write_update.php //이부분은 에러가 없음
// 트랙백 주소가 있다면 (내가 딴 놈글에 트랙백을 걸 때, 상대방에게 내글 정보 핑 보내기)
if (($w != "u" && $wr_trackback) || ($w=="u" && $wr_trackback && $re_trackback))
{
$trackback_url = "$g4[url]/$g4[bbs]/tb.php/$bo_table/$wr_id";
$msg = "";
$msg = send_trackback($wr_trackback, $trackback_url, $wr_subject, $board[bo_subject], $_POST[wr_content]);
if ($msg) {
echo "<meta http-equiv='content-type' content='text/html; charset={$g4['charset']}'>\n";
echo "<script type='text/javascript'>alert('$msg $wr_trackback');</script>";
}
// 사용자 코드 실행
/*내가 트랙백을 건 것을 댓글 처럼 내 글 아래에 붙이는 방법을 처리하는 화일(활용팁에서 가져옴)
문제는 상대글이 같은서 버 이외는 글 내용을 가져 올 수 없어 *content는 "링크만 표시키로" */
@include_once ("$board_skin_path/write_update.skin.php");
}
----------------------------------
write_update.skin.php //여기 중간에 문제 구문이 있음.
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
// 자신만의 코드를 넣어주세요.
//트랙백 기능 추가
//내가 딴놈 글에 트랙백을 걸은 후 상대 링크를 트랙백 리스트에 포함 시키기 위한 처리
// 마치 그 놈이 내글에다 다시 트랙백을 걸어 온 것처럼 강제로 만드는 것임
// 이리좀 자세히 주석을 달아 주셨음 좋았을텐데, 한참 헤멨음(이게 보내는 건지 받는 건지를)
if ($wr_trackback) {
$board = sql_fetch(" select bo_subject, bo_use_trackback from $g4[board_table]
where bo_table = '$bo_table' ");
if (!$board[bo_use_trackback])
$msg = "트랙백 사용이 금지된 게시판입니다.";
if (!$msg) {
$next_num = get_next_num($write_table);
$sql = " select max(wr_comment) as max_comment from $g4[write_prefix]$bo_table
where wr_parent = '$wr_id' and wr_is_comment = 1 ";
$row = sql_fetch($sql);
$row[max_comment] += 1;
$arr2 = explode("/", $trackback_url); //내글의 url,
//원본에는 상대글의 tb_url인 $wr_trackback이었음, 이건 말이 안되어 고침
//상대글이 같은 서버내 다른 글이 라면 말이되지만, 끼리끼리만 되란법은 없죠
$bo2 = $arr2[5];
$wr2 = $arr2[6];
$sql4 = " select * from $g4[write_prefix]{$bo2}
where wr_parent = '$wr2' and wr_is_comment = 0 ";
$row4 = sql_fetch($sql4);
//여기부터 문제된 곳 (자세히 봐 주세요. 어디가 틀린 곳인지요)
// 네이버/다음 블로그 트랙백을 링크 url로 변경
if (preg_match('/tb\//', $wr_trackback)) {
$wr_trackback = preg_replace('/tb\//', "", $wr_trackback);
// 그누보드 트랙백을 뒤 token을 제거해서 링크url로 변경
} elseif ( preg_match('/bbs\/tb\.php/', $wr_trackback)) {
$wr_trackback = preg_replace('/\/[^\/]*$/', "", $wr_trackback);
}
echo $wr_trackback; //요부분을 없이해도 안 되네요.
//프로그램이 여기서 스톱. 이후 $sql이 실행 안됨. 이걸 제거하면 통과.
$sql = " insert into $g4[write_prefix]$bo_table
set wr_num = '$next_num',
wr_parent = '$wr_id',
wr_is_comment = '1',
wr_comment = '$row[max_comment]',
wr_content = '\"내가 건 트랙백 :{$wr_trackback}\"',
wr_trackback = '$wr_trackback',
mb_id = '$wr[mb_id]',
wr_password = '$wr[wr_password]',
wr_datetime = '$g4[time_ymdhis]' ;
$result = sql_query($sql, FALSE);
if ($result) {
$comment_id = mysql_insert_id();
sql_query(" update $g4[write_prefix]$bo_table set wr_comment = wr_comment + 1
where wr_id = '$wr_id' ", FALSE);
sql_query(" insert into $g4[board_new_table]
( bo_table, wr_id, wr_parent, bn_datetime )
values ( '$bo_table', '$comment_id', '$wr_id', '$g4[time_ymdhis]' ) ");
sql_query(" update $g4[board_table]
set bo_count_comment = bo_count_comment + 1
where bo_table = '$bo_table' ", FALSE);
} else
$msg = "$g4[write_prefix]$bo_table TABLE INSERT 오류";
}
}
?>
에러는 아래를 봐 주세요.
-----------------------------------------------------
write_update.php //이부분은 에러가 없음
// 트랙백 주소가 있다면 (내가 딴 놈글에 트랙백을 걸 때, 상대방에게 내글 정보 핑 보내기)
if (($w != "u" && $wr_trackback) || ($w=="u" && $wr_trackback && $re_trackback))
{
$trackback_url = "$g4[url]/$g4[bbs]/tb.php/$bo_table/$wr_id";
$msg = "";
$msg = send_trackback($wr_trackback, $trackback_url, $wr_subject, $board[bo_subject], $_POST[wr_content]);
if ($msg) {
echo "<meta http-equiv='content-type' content='text/html; charset={$g4['charset']}'>\n";
echo "<script type='text/javascript'>alert('$msg $wr_trackback');</script>";
}
// 사용자 코드 실행
/*내가 트랙백을 건 것을 댓글 처럼 내 글 아래에 붙이는 방법을 처리하는 화일(활용팁에서 가져옴)
문제는 상대글이 같은서 버 이외는 글 내용을 가져 올 수 없어 *content는 "링크만 표시키로" */
@include_once ("$board_skin_path/write_update.skin.php");
}
----------------------------------
write_update.skin.php //여기 중간에 문제 구문이 있음.
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
// 자신만의 코드를 넣어주세요.
//트랙백 기능 추가
//내가 딴놈 글에 트랙백을 걸은 후 상대 링크를 트랙백 리스트에 포함 시키기 위한 처리
// 마치 그 놈이 내글에다 다시 트랙백을 걸어 온 것처럼 강제로 만드는 것임
// 이리좀 자세히 주석을 달아 주셨음 좋았을텐데, 한참 헤멨음(이게 보내는 건지 받는 건지를)
if ($wr_trackback) {
$board = sql_fetch(" select bo_subject, bo_use_trackback from $g4[board_table]
where bo_table = '$bo_table' ");
if (!$board[bo_use_trackback])
$msg = "트랙백 사용이 금지된 게시판입니다.";
if (!$msg) {
$next_num = get_next_num($write_table);
$sql = " select max(wr_comment) as max_comment from $g4[write_prefix]$bo_table
where wr_parent = '$wr_id' and wr_is_comment = 1 ";
$row = sql_fetch($sql);
$row[max_comment] += 1;
$arr2 = explode("/", $trackback_url); //내글의 url,
//원본에는 상대글의 tb_url인 $wr_trackback이었음, 이건 말이 안되어 고침
//상대글이 같은 서버내 다른 글이 라면 말이되지만, 끼리끼리만 되란법은 없죠
$bo2 = $arr2[5];
$wr2 = $arr2[6];
$sql4 = " select * from $g4[write_prefix]{$bo2}
where wr_parent = '$wr2' and wr_is_comment = 0 ";
$row4 = sql_fetch($sql4);
//여기부터 문제된 곳 (자세히 봐 주세요. 어디가 틀린 곳인지요)
// 네이버/다음 블로그 트랙백을 링크 url로 변경
if (preg_match('/tb\//', $wr_trackback)) {
$wr_trackback = preg_replace('/tb\//', "", $wr_trackback);
// 그누보드 트랙백을 뒤 token을 제거해서 링크url로 변경
} elseif ( preg_match('/bbs\/tb\.php/', $wr_trackback)) {
$wr_trackback = preg_replace('/\/[^\/]*$/', "", $wr_trackback);
}
echo $wr_trackback; //요부분을 없이해도 안 되네요.
//프로그램이 여기서 스톱. 이후 $sql이 실행 안됨. 이걸 제거하면 통과.
$sql = " insert into $g4[write_prefix]$bo_table
set wr_num = '$next_num',
wr_parent = '$wr_id',
wr_is_comment = '1',
wr_comment = '$row[max_comment]',
wr_content = '\"내가 건 트랙백 :{$wr_trackback}\"',
wr_trackback = '$wr_trackback',
mb_id = '$wr[mb_id]',
wr_password = '$wr[wr_password]',
wr_datetime = '$g4[time_ymdhis]' ;
$result = sql_query($sql, FALSE);
if ($result) {
$comment_id = mysql_insert_id();
sql_query(" update $g4[write_prefix]$bo_table set wr_comment = wr_comment + 1
where wr_id = '$wr_id' ", FALSE);
sql_query(" insert into $g4[board_new_table]
( bo_table, wr_id, wr_parent, bn_datetime )
values ( '$bo_table', '$comment_id', '$wr_id', '$g4[time_ymdhis]' ) ");
sql_query(" update $g4[board_table]
set bo_count_comment = bo_count_comment + 1
where bo_table = '$bo_table' ", FALSE);
} else
$msg = "$g4[write_prefix]$bo_table TABLE INSERT 오류";
}
}
?>
댓글 전체
제가 드린 코드네요.. ^^;
그때도 테스트 하고 드렸고, 방금전에도 다시 해당 코드만 떼어다 (그누보드 트랙백 주소와 네이버 블로그 트랙백 주소로) 테스트 해봤는데 처리되었습니다. ^^;
왜 안될까요???
그때도 테스트 하고 드렸고, 방금전에도 다시 해당 코드만 떼어다 (그누보드 트랙백 주소와 네이버 블로그 트랙백 주소로) 테스트 해봤는데 처리되었습니다. ^^;
왜 안될까요???
예 맞습니다.
코드상에는 전혀 이상이 없는데 이 코드만 중간에 끼면 한참 웨이팅에 걸리네요.
원래 전진님의 코드 원본으로 view페이지에 붙였을 때는 제대로 되더니만 이것을 view_comment.skin.php에 붙이고 코드를 약간 손봤더니만 안되더군요.
이럴때가 가장 황당한데 아마도 db접속과 관련된 다른 어디와 충돌이 나는 모양입니다.
코드상에는 전혀 이상이 없는데 이 코드만 중간에 끼면 한참 웨이팅에 걸리네요.
원래 전진님의 코드 원본으로 view페이지에 붙였을 때는 제대로 되더니만 이것을 view_comment.skin.php에 붙이고 코드를 약간 손봤더니만 안되더군요.
이럴때가 가장 황당한데 아마도 db접속과 관련된 다른 어디와 충돌이 나는 모양입니다.
도움이 안될때는, 채택안하셔도 됩니다. ^^;
근데 아무리봐도, 에러가 나신다는 부분은 $wr_trackback 변수 하나만 처리하는, 아주 간단한 코드블럭이라..
혹시 에러내용을 알 수 있을까요?
구체적인 에러 내용이 안뜬다면, 좀 구식이기는 하지만, 중간중간 확인할 수 있는 echo를 넣어서 어디에서 멈추는 지 알아볼 수 있다면, 도움을 더 드릴 수 있을것 같은데요.. ^^
근데 아무리봐도, 에러가 나신다는 부분은 $wr_trackback 변수 하나만 처리하는, 아주 간단한 코드블럭이라..
혹시 에러내용을 알 수 있을까요?
구체적인 에러 내용이 안뜬다면, 좀 구식이기는 하지만, 중간중간 확인할 수 있는 echo를 넣어서 어디에서 멈추는 지 알아볼 수 있다면, 도움을 더 드릴 수 있을것 같은데요.. ^^
원인을 찾았습니다.
말씀드리기 창피한 이야기인데요. 화일 update 실패였군요.
localhost내에 있는 화일을 고치고는 이것을 main server로 ftp 전송을 할 때 전송이 제대로 안되었군요. 이럴 때가 가끔 있음.
초보들은 이처럼 문제 원인을 엉뚱한데서 짚고 질문을 하니 답변자들께서도 난감할 경우가 생기는데 이번이 그런거네요.
그렇지만 바로 이런 과정을 통해서 문제의 근본을 찾게 되니까 큰 도움이 되었습니다.
(코드 에러가 아니라면 그렇다면 어디가 문제지?하고 시야를 넓게 할 수 있으니....)
말씀드리기 창피한 이야기인데요. 화일 update 실패였군요.
localhost내에 있는 화일을 고치고는 이것을 main server로 ftp 전송을 할 때 전송이 제대로 안되었군요. 이럴 때가 가끔 있음.
초보들은 이처럼 문제 원인을 엉뚱한데서 짚고 질문을 하니 답변자들께서도 난감할 경우가 생기는데 이번이 그런거네요.
그렇지만 바로 이런 과정을 통해서 문제의 근본을 찾게 되니까 큰 도움이 되었습니다.
(코드 에러가 아니라면 그렇다면 어디가 문제지?하고 시야를 넓게 할 수 있으니....)
아.. 다행입니다.
네, 가끔 전혀 예상치 못한곳에서 에러가 날 수 있습니다.
특히 로컬/서버 식으로 별도의 버전을 사용하는 경우에는 수정된 화일의 업로드/업데이트 여부도 헷갈릴 수 있죠.. ^^
잘 되신다니 다행입니다. ^^
네, 가끔 전혀 예상치 못한곳에서 에러가 날 수 있습니다.
특히 로컬/서버 식으로 별도의 버전을 사용하는 경우에는 수정된 화일의 업로드/업데이트 여부도 헷갈릴 수 있죠.. ^^
잘 되신다니 다행입니다. ^^
감사합니다.
어설프지만 겨우 완성해서 이렇게 만들었습니다. 시간나면 봐 주시고 또 고언 부탁드립니다. http://www.biz-nara.com/bbs/tb.php/nanum/217
어설프지만 겨우 완성해서 이렇게 만들었습니다. 시간나면 봐 주시고 또 고언 부탁드립니다. http://www.biz-nara.com/bbs/tb.php/nanum/217