웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
코멘트를 달아야만 첨부파일 다운로드 할 수 있게 하기
2008.07.29 12:47
예전에 제로보드4 시절 헐랭이 님이 올려주신 팁이었는데 xe로 바뀌면서 쓸 수 없게 되었지요. 그런데 제 사이트 특성상 꼭 필요한 거라서 제작 의뢰 게시판에다가 의뢰해서 얻은 팁 입니다. 모두와 공유하자는 취지에서 공개하게 되었습니다.
1.03 버전에 제로보드 기본 스킨 게시판(xe_board) 기준 입니다. 스킨 파일 중에서 view_document.html 파일만 수정하면 됩니다.
완성본도 함께 첨부파일로 올리니 첨부파일 그대로 가져다가 덮어씌워 쓰셔도 됩니다. (다만 136라인의 DB설정 부분을 기입해야 함)
에디터플러스 같은 에디터 프로그램으로 열었을 경우를 기준으로 합니다.
1) 134 라인 다음에 아래 소스를 추가 (DB설정 기입)
<?
## 데이터 베이스 연결설정 인자
$hostName = "localhost";
$userName = "";
$userPassword = "";
$dbName = "";
## 데이터 베이스에 연결한다.
$conn = @mysql_connect($hostName,$userName,$userPassword);
if(!$conn) {
error("DB 연결 실패");
exit;
}
$db = mysql_select_db($dbName);
if(!$db) {
error("DB 선택 실패");
exit;
}
$query = "SELECT module_srl from xe_modules where mid = '$_GET[mid]' ";
$result2 = mysql_query($query, $conn);
$row2=mysql_fetch_array($result2);
$query = "SELECT user_id, ipaddress from xe_comments where module_srl = '$row2[module_srl]' and document_srl = '$_GET[document_srl]' ";
$result = mysql_query($query, $conn);
for($i=0;$row=mysql_fetch_array($result);$i++) {
$userid .= ",".$row[user_id];
$ipaddress .= ",".$row[ipaddress];
}
if($is_logged) $pos1 = strpos($userid, $logged_info->user_id);
$pos2 = strpos($ipaddress, $_SERVER['REMOTE_ADDR']);
?>
2) 141번 라인(위 1)번 소스를 추가했다면 그만큼 라인넘버가 늘어나니 주의. 1)소스를 추가하지 않았을 경우의 라인넘버임)의
<li><a href="{getUrl('')}{$file->download_url}">{$file->source_filename} ({FileHandler::filesize($file->file_size)})({number_format($file->download_count)})</a></li>
이것을 아래 소스로 변경
<li>
<?
if($pos1 || $pos2) {
?>
<a href="{getUrl('')}{$file->download_url}">
<? } ?>
<!--@if($logged_info->user_id==$oDocument->getUserId() || $grant->is_admin)-->
<a href="{getUrl('')}{$file->download_url}">
<!--@end-->
{$file->source_filename} ({FileHandler::filesize($file->file_size)})({number_format($file->download_count)})</a></li>
특징은 아래와 같습니다.
1) 코멘트를 달지 않으면 첨부파일에 링크가 사라져서 클릭이 안됨. 코멘트를 달아야 첨부파일에 링크가 살아남.
2) 글쓴이 자신은 코멘트를 안 달아도 다운로드 가능
3) 관리자들(관리그룹)도 코멘트 안달고 다운로드 가능
4) 비회원도 IP를 근거로 코멘트를 달아야 다운로드가 가능
5) 4)으로부터 파생되는 특징 : 2개의 아이디로 활동할 경우, 1번 아이디로 댓글을 달아 놨으면 2번 아이디는 댓글을 안달아도 다운로드 가능. 왜냐면 IP가 같으니까.
6) 첨부파일 링크주소만 알고 있다면 코멘트를 달지 않아도 주소창에 이 주소를 침으로써 다운로드가 가능하긴 하지만 코멘트를 달지 않으면 첨부파일의 링크 주소를 알 수 없다고 함.
현재까지 별 문제없이 사용하고 있습니다...
다른 분들에게도 도움이 되셨으면 좋겠군요.
P.S
말씀드렸듯이 의뢰해서 얻은 팁인마큼 전 소스에 대해 아무것도 모릅니다.
질문하셔도 전혀 답변 못드립니다 -.-
1.03 버전에 제로보드 기본 스킨 게시판(xe_board) 기준 입니다. 스킨 파일 중에서 view_document.html 파일만 수정하면 됩니다.
완성본도 함께 첨부파일로 올리니 첨부파일 그대로 가져다가 덮어씌워 쓰셔도 됩니다. (다만 136라인의 DB설정 부분을 기입해야 함)
에디터플러스 같은 에디터 프로그램으로 열었을 경우를 기준으로 합니다.
1) 134 라인 다음에 아래 소스를 추가 (DB설정 기입)
<?
## 데이터 베이스 연결설정 인자
$hostName = "localhost";
$userName = "";
$userPassword = "";
$dbName = "";
## 데이터 베이스에 연결한다.
$conn = @mysql_connect($hostName,$userName,$userPassword);
if(!$conn) {
error("DB 연결 실패");
exit;
}
$db = mysql_select_db($dbName);
if(!$db) {
error("DB 선택 실패");
exit;
}
$query = "SELECT module_srl from xe_modules where mid = '$_GET[mid]' ";
$result2 = mysql_query($query, $conn);
$row2=mysql_fetch_array($result2);
$query = "SELECT user_id, ipaddress from xe_comments where module_srl = '$row2[module_srl]' and document_srl = '$_GET[document_srl]' ";
$result = mysql_query($query, $conn);
for($i=0;$row=mysql_fetch_array($result);$i++) {
$userid .= ",".$row[user_id];
$ipaddress .= ",".$row[ipaddress];
}
if($is_logged) $pos1 = strpos($userid, $logged_info->user_id);
$pos2 = strpos($ipaddress, $_SERVER['REMOTE_ADDR']);
?>
2) 141번 라인(위 1)번 소스를 추가했다면 그만큼 라인넘버가 늘어나니 주의. 1)소스를 추가하지 않았을 경우의 라인넘버임)의
<li><a href="{getUrl('')}{$file->download_url}">{$file->source_filename} ({FileHandler::filesize($file->file_size)})({number_format($file->download_count)})</a></li>
이것을 아래 소스로 변경
<li>
<?
if($pos1 || $pos2) {
?>
<a href="{getUrl('')}{$file->download_url}">
<? } ?>
<!--@if($logged_info->user_id==$oDocument->getUserId() || $grant->is_admin)-->
<a href="{getUrl('')}{$file->download_url}">
<!--@end-->
{$file->source_filename} ({FileHandler::filesize($file->file_size)})({number_format($file->download_count)})</a></li>
특징은 아래와 같습니다.
1) 코멘트를 달지 않으면 첨부파일에 링크가 사라져서 클릭이 안됨. 코멘트를 달아야 첨부파일에 링크가 살아남.
2) 글쓴이 자신은 코멘트를 안 달아도 다운로드 가능
3) 관리자들(관리그룹)도 코멘트 안달고 다운로드 가능
4) 비회원도 IP를 근거로 코멘트를 달아야 다운로드가 가능
5) 4)으로부터 파생되는 특징 : 2개의 아이디로 활동할 경우, 1번 아이디로 댓글을 달아 놨으면 2번 아이디는 댓글을 안달아도 다운로드 가능. 왜냐면 IP가 같으니까.
6) 첨부파일 링크주소만 알고 있다면 코멘트를 달지 않아도 주소창에 이 주소를 침으로써 다운로드가 가능하긴 하지만 코멘트를 달지 않으면 첨부파일의 링크 주소를 알 수 없다고 함.
현재까지 별 문제없이 사용하고 있습니다...
다른 분들에게도 도움이 되셨으면 좋겠군요.
P.S
말씀드렸듯이 의뢰해서 얻은 팁인마큼 전 소스에 대해 아무것도 모릅니다.
질문하셔도 전혀 답변 못드립니다 -.-
댓글 8
-
띵야
2008.07.29 13:21
-
반도체맨
2008.07.29 13:25
유용한 기능입니다 ^^
소스가 좀 위험하기는 하지만 조금만 더 맞게 고쳐지면 좋을거같에요 ^^; -
메티스
2008.07.29 23:26
우와~
꼭 필요했던거당 ㅋㅋ -
임진영
2008.07.30 04:03
이걸 어디다 넣어요? -
Gnee
2008.07.31 14:17
정말 최고네요;;와아..
감사드립니다.^^ -
C。9ːHena〃
2008.07.31 14:19
유용하네요 ^^ ;
조그만한 개인 홈페이지 운영중이라 ..
별로 쓸 그걸 못 느끼겠네요 ~
아무튼 어렵게 구한 소스 공개 감사드려용^^ -
건의맨
2008.08.04 10:48
혹시 이것도 만들수 있으신지에 대한 건의 하나 드립니다.
코멘트를 달아야 다운로드를 받을수 있는것도 좋지만
암호화된 이미지 문구를 입력해야 다운로드 가능하겠금 하는 방안은 어떨련지 생각해 봅니다.
암호화된 이미지 문구는 다운로드를 제공하는 게시물안에서 랜덤으로 바뀌고 말이죠 ㅋㅋ
이러면 몰래 주소 불펌이라도 암호를 모르니 몰래 다운로드 받을수 없지 않겠습니까? 하는 제안을 해봅니다. ㅎㅎㅎ -
지오426
2008.08.05 22:25
주소를 불펌해도 로긴하지 않으면 권한이 없어서 다운로드를 할 수 없습니다. 물론 비회원도 열람할 수 있도록 권한을 열어 놓으면 다른 문제겠지만...
전 별로 쓸 일은 없을 듯하지만 매우 유용한 팁이 될 듯합니다.
추천 드립니다.