뽀라닷컴
Loading...




웹디자인,포토샵,그누보드,제로보드,동영상제작 관련 메모 >>


전체(434)인터넷,컴퓨터 (93) | 웹디자인tip (180) | CG,그래픽tip (70) | BBS_Tip (74) | 영상tip (17) |
제로보드 게시물날짜임의변경팁 2008-04-27 22:44:59
홈페이지홈페이지

1. 제로보드 root 폴더에 있는 write.php 를 수정합니다.
그 페이지를 열고 아래와 같은 부분을 찾습니다.

/******************************************************************************************
* 글쓰기 모드에 따른 내용 체크
*****************************************************************************************/

        if($mode=="modify") {

                // 비밀글이고 패스워드가 틀리고 관리자가 아니면 리턴
                if($data[is_secret]&&!$is_admin&&$data[ismember]!=$member[no]&&$HTTP_COOKIE_VARS[zb_s_check]!=$setup[no]."_".$no) error("정상적인 방법으로 수정하세요");

                        $name=stripslashes($data[name]); // 이름
                        $email=stripslashes($data[email]); // 메일
                        $homepage=stripslashes($data[homepage]); // 홈페이지
                        $subject=$data[subject]=stripslashes($data[subject]); // 제목
                        $subject=str_replace(""",""",$subject);
                        $homepage=str_replace(""",""",$homepage);
                        $name=str_replace(""",""",$name);
                        $sitelink1=str_replace(""",""",$sitelink1);
                        $sitelink2=str_replace(""",""",$sitelink2);
                        $memo=stripslashes($data[memo]); // 내용
                        $sitelink1=$data[sitelink1]=stripslashes($data[sitelink1]);
                        $sitelink2=$data[sitelink2]=stripslashes($data[sitelink2]);
            

이 부분 바로 밑에 아래를 소스를 삽입합니다.
//임의날짜 수정 추가
            $reg_date=$data[reg_date];

그러면 결과는 아래와 같이 되어야 합니다.
위에 생략....

/******************************************************************************************
* 글쓰기 모드에 따른 내용 체크
*****************************************************************************************/

        if($mode=="modify") {

                // 비밀글이고 패스워드가 틀리고 관리자가 아니면 리턴
                if($data[is_secret]&&!$is_admin&&$data[ismember]!=$member[no]&&$HTTP_COOKIE_VARS[zb_s_check]!=$setup[no]."_".$no) error("정상적인 방법으로 수정하세요");

                        $name=stripslashes($data[name]); // 이름
                        $email=stripslashes($data[email]); // 메일
                        $homepage=stripslashes($data[homepage]); // 홈페이지
                        $subject=$data[subject]=stripslashes($data[subject]); // 제목
                        $subject=str_replace(""",""",$subject);
                        $homepage=str_replace(""",""",$homepage);
                        $name=str_replace(""",""",$name);
                        $sitelink1=str_replace(""",""",$sitelink1);
                        $sitelink2=str_replace(""",""",$sitelink2);
                        $memo=stripslashes($data[memo]); // 내용
                        $sitelink1=$data[sitelink1]=stripslashes($data[sitelink1]);
                        $sitelink2=$data[sitelink2]=stripslashes($data[sitelink2]);
            
                        //임의날짜 수정 추가
                       $reg_date=$data[reg_date];    

                        if($data[file_name1])$file_name1="<br> ".$data[s_file_name1]."이 등록되어 있습니다. <input type=checkbox name=del_file1 value=1> 삭제";
                        if($data[file_name2])$file_name2="<br> ".$data[s_file_name2]."이 등록되어 있습니다. <input type=checkbox name=del_file2 value=1> 삭제";

이하 생략....

제로보드 폴더의 write.php 소스수정 끝.

2. 그 다음은 write_ok.php의 수정글일때의 부분만 수정합니다.
아래의 부분을 찾습니다.
/***************************************************************************
* 수정글일때
**************************************************************************/
        if($mode=="modify"&&$no) {

                if($s_data[ismember]) {
                        if(!$is_admin&&$member[level]>$setup[grant_delete]&&$s_data[ismember]!=$member[no]) Error("정상적인 방법으로 수정하세요");
                }

                // 비밀번호 검사;;
                if($s_data[ismember]!=$member[no]&&!$is_admin) {
                        if($password!=$s_data[password]) Error("비밀번호가 틀렸습니다");
                }

                // 파일삭제
                if($del_file1==1) {@z_unlink("./".$s_data[file_name1]);$del_que1=",file_name1='',s_file_name1=''";}
                if($del_file2==1) {@z_unlink("./".$s_data[file_name2]);$del_que2=",file_name2='',s_file_name2=''";}

                // 파일등록
                if($file_name1) {$del_que1=",file_name1='$file_name1',s_file_name1='$s_file_name1'";}
                if($file_name2) {$del_que2=",file_name2='$file_name2',s_file_name2='$s_file_name2'";}

여기 바로 밑에 아래의 소스를 추가합니다.
  //임의 날짜 변환
        if(!$year) {
        $reg_date= $reg_date_old;}
        else {
        $t_time = mktime($hour, $min, $sec, $mon, $day, $year);
        $reg_date=$t_time;}

또 그 아래에 좀 내려가시다 보면 수정할 곳이 또 있습니다.
@mysql_query("update $t_board"."_$id set headnum='$headnum',prev_no='$prev_no',next_no='$next_no',child='$child',depth='$depth',arrangenum='$arrangenum',father='$father',name='$name',email='$email',homepage='$homepage',reg_date='$reg_date',subject='$subject',memo='$memo',sitelink1='$sitelink1',sitelink2='$sitelink2',use_html='$use_html',reply_mail='$reply_mail',is_secret='$is_secret',category='$category' $del_que1 $del_que2 where no='$no'") or error(mysql_error());

이런 부분이 있는데, 수정글일때 부분의 이런 부분에 reg_date='$reg_date' 소스를 넣어줍니다.
그러니까..
수정글일때 부분에서 // 공지 -> 일반글, // 일반글 -> 공지, // 일반->일반, 공지->공지 일때, 이 세부분만 고쳐시면 됩니다.
그러면 아래의 소스와 같이 됩니다.

상위 생략...
/***************************************************************************
* 수정글일때
**************************************************************************/
        if($mode=="modify"&&$no) {

                if($s_data[ismember]) {
                        if(!$is_admin&&$member[level]>$setup[grant_delete]&&$s_data[ismember]!=$member[no]) Error("정상적인 방법으로 수정하세요");
                }

                // 비밀번호 검사;;
                if($s_data[ismember]!=$member[no]&&!$is_admin) {
                        if($password!=$s_data[password]) Error("비밀번호가 틀렸습니다");
                }

                // 파일삭제
                if($del_file1==1) {@z_unlink("./".$s_data[file_name1]);$del_que1=",file_name1='',s_file_name1=''";}
                if($del_file2==1) {@z_unlink("./".$s_data[file_name2]);$del_que2=",file_name2='',s_file_name2=''";}

                // 파일등록
                if($file_name1) {$del_que1=",file_name1='$file_name1',s_file_name1='$s_file_name1'";}
                if($file_name2) {$del_que2=",file_name2='$file_name2',s_file_name2='$s_file_name2'";}

        //임의 날짜 변환
        if(!$year) {
        $reg_date= $reg_date_old;}
        else {
        $t_time = mktime($hour, $min, $sec, $mon, $day, $year);
        $reg_date=$t_time;}

                // 공지 -> 일반글
                if(!$notice&&$s_data[headnum]<="-2000000000") {
                        $temp=mysql_fetch_array(mysql_query("select max(division) from $t_division"."_$id"));
                        $max_division=$temp[0];
                        $temp=mysql_fetch_array(mysql_query("select max(division) from $t_division"."_$id where num>0 and division!='$max_division'"));
                        if(!$temp[0]) $second_division=0; else $second_division=$temp[0];

                        // 헤드넘+1 한값을 가짐;;
                        $max_headnum=mysql_fetch_array(mysql_query("select min(headnum) from $t_board"."_$id where (division='$max_division' or division='$second_division') and headnum>-2000000000")); // 공지가 아닌 최소 headnum 구함
                        $headnum=$max_headnum[0]-1;

                        $next_data=mysql_fetch_array(mysql_query("select no,headnum,division from $t_board"."_$id where (division='$max_division' or division='$second_division') and headnum='$max_headnum[0]' and arrangenum='0'")); // 다음글을 구함;;
                        if(!$next_data[0]) $next_data[0]="0";
                        $next_no=$next_data[0];

                        if(!$next_data[division]) $division=1; else $division=$next_data[division];

                        $prev_data=mysql_fetch_array(mysql_query("select no from $t_board"."_$id where (division='$max_division' or division='$second_division') and headnum<'$headnum' and no!='$no' order by headnum desc limit 1")); // 이전글을 구함;;
                        if($prev_data[0]) $prev_no=$prev_data[0]; else $prev_no=0;

                        $child="0";
                        $depth="0";    
                        $arrangenum="0";
                        $father="0";
                   minus_division($s_data[division]);
                        @mysql_query("update $t_board"."_$id set headnum='$headnum',prev_no='$prev_no',next_no='$next_no',child='$child',depth='$depth',arrangenum='$arrangenum',father='$father',name='$name',email='$email',homepage='$homepage',reg_date='$reg_date',subject='$subject',memo='$memo',sitelink1='$sitelink1',sitelink2='$sitelink2',use_html='$use_html',reply_mail='$reply_mail',is_secret='$is_secret',category='$category' $del_que1 $del_que2 where no='$no'") or error(mysql_error());
                        plus_division($division);

                        // 다음글의 이전글을 수정
                        if($next_no)mysql_query("update $t_board"."_$id set prev_no='$no' where division='$next_data[division]' and headnum='$next_data[headnum]'");  

                        // 이전글의 다음글을 수정
                        if($prev_no)mysql_query("update $t_board"."_$id set next_no='$no' where no='$prev_no'");                  

                        mysql_query("update $t_board"."_$id set prev_no=0 where (division='$max_division' or division='$second_division') and prev_no='$s_data[no]' and headnum!='$next_data[headnum]'");
                        mysql_query("update $t_category"."_$id set num=num-1 where no='$s_data[category]'",$connect);
                        mysql_query("update $t_category"."_$id set num=num+1 where no='$category'",$connect);
                }

                   // 일반글 -> 공지
                elseif($notice&&$s_data[headnum]>-2000000000) {
                        $temp=mysql_fetch_array(mysql_query("select max(division) from $t_division"."_$id"));
                        $max_division=$temp[0];
                        $temp=mysql_fetch_array(mysql_query("select max(division) from $t_division"."_$id where num>0 and division!='$max_division'"));
                        if(!$temp[0]) $second_division=0; else $second_division=$temp[0];

                        $max_headnum=mysql_fetch_array(mysql_query("select min(headnum) from $t_board"."_$id where division='$max_division' or division='$second_division'"));  // 최고글을 구함;;
                        $headnum=$max_headnum[0]-1;
                        if($headnum>-2000000000) $headnum=-2000000000; // 최고 headnum이 공지가 아니면 현재 글에 공지를 넣음;

                        $next_data=mysql_fetch_array(mysql_query("select no,headnum,division from $t_board"."_$id where (division='$max_division' or division='$second_division') and headnum='$max_headnum[0]' and arrangenum='0'"));
                        if(!$next_data[0]) $next_data[0]="0";
                        $next_no=$next_data[0];
                        $prev_no=0;
                        $child="0";
                        $depth="0";
                        $arrangenum="0";
                        $father="0";
                        minus_division($s_data[division]);
                        $division=add_division();
                        @mysql_query("update $t_board"."_$id set division='$division',headnum='$headnum',prev_no='$prev_no',next_no='$next_no',child='$child',depth='$depth',arrangenum='$arrangenum',father='$father',name='$name',email='$email',homepage='$homepage',reg_date='$reg_date',subject='$subject',memo='$memo',sitelink1='$sitelink1',sitelink2='$sitelink2',use_html='$use_html',reply_mail='$reply_mail',is_secret='$is_secret',category='$category' $del_que1 $del_que2 where no='$no'") or error(mysql_error());

                        if($s_data[father]) mysql_query("update $t_board"."_$id set child='$s_data[child]' where no='$s_data[father]'"); // 답글이었으면 원본글의 답글을 현재글의 답글로 대체
                        if($s_data[child]) mysql_query("update $t_board"."_$id set depth=depth-1,father='$s_data[father]' where no='$s_data[child]'"); // 답글이 있으면 현재글의 위치로;;

                        // 원래 다음글로 이글을 가지고 있었던 데이타의 prev_no을 바꿈;
                        $temp=mysql_fetch_array(mysql_query("select max(headnum) from $t_board"."_$id where headnum<='$s_data[headnum]'"));
                        $temp=mysql_fetch_array(mysql_query("select no from $t_board"."_$id where headnum='$temp[0]' and depth='0'"));
                        mysql_query("update $t_board"."_$id set prev_no='$temp[no]' where prev_no='$s_data[no]'");

                        mysql_query("update $t_board"."_$id set next_no='$s_data[next_no]' where next_no='$s_data[no]'");

                        mysql_query("update $t_board"."_$id set prev_no='$no' where prev_no='0' and no!='$no'") or error(mysql_error()); // 다음글의 이전글을 설정
                        mysql_query("update $t_category"."_$id set num=num-1 where no='$s_data[category]'",$connect);
                        mysql_query("update $t_category"."_$id set num=num+1 where no='$category'",$connect);

                // 일반->일반, 공지->공지 일때
                } else {
                        @mysql_query("update $t_board"."_$id set name='$name',subject='$subject',email='$email',homepage='$homepage',reg_date='$reg_date',memo='$memo',sitelink1='$sitelink1',sitelink2='$sitelink2',use_html='$use_html',reply_mail='$reply_mail',is_secret='$is_secret',category='$category' $del_que1 $del_que2 where no='$no'") or error(mysql_error());
                        mysql_query("update $t_category"."_$id set num=num-1 where no='$s_data[category]'",$connect);
                        mysql_query("update $t_category"."_$id set num=num+1 where no='$category'",$connect);
                }


아래 생략....


3. 그 다음 마지막으로 제로보드를 설치한 폴더에서 skin 폴더에 들어가셔서 "모든" 게시판 스킨의 폴더에 들어가 write.php 소스에 아래의 소스를 넣어주시면 됩니다.
물론 그 스킨파일의 html 소스에 맞게 고쳐서 넣어주셔야 올바른 모양으로 나오게 됩니다. 처음 소스의 해석은 회원 레벨 5 이하나 즉, 4부터 그리고 운영자에게 보여지는 화면이고
다음 화면은 회원레벨 5이상이나 비회원에게 보여지는 화면입니다.

<!--- 날짜 수정 시작 ----->
<? if($member[level]< 5 && $is_admin) { ?>
<!--- 회원 날짜 임의 수정 시작-------->
<input type=hidden name='reg_date_old' value=<?=$reg_date ?>>
<tr><td colspan=2><img src=images/t.gif width=1 height=3></td></tr>
<tr>
  <td class=daerew_8>날짜수정  </td>
  <td class=daerew_8 style='padding-right:20'><input type="text" name="year" size="6" maxlength=4 class=input> 년 <input type="text" name="mon" size="4" maxlength=2 class=input> 월 <input type="text" name="day" size="4" maxlength=2 class=input> 일 (수정 안할시에는 그냥 놔두세요.)
    <input type="hidden" name="hour" size="2" value="0">
    <input type="hidden" name="min" size="2" value="0">
    <input type="hidden" name="sec" size="2" value="0">
  </td>
</tr>
<!--- 회원 날짜 임의 수정 끝 -------->
<? } ?>

<? if($member[level] > 5 ) { ?>
<!--- 권한 밖의 회원의 날짜 임의 수정 시작-------->
<input type=hidden name='reg_date_old' value=<?=$reg_date ?>>
<input type="hidden" name="year" value="">
<input type="hidden" name="mon" value="">
<input type="hidden" name="day" value="">
<input type="hidden" name="hour" size="2" value="0">
<input type="hidden" name="min" size="2" value="0">
<input type="hidden" name="sec" size="2" value="0">
<!--- 권한 밖의 회원의 날짜 임의 수정 끝 -------->
<? } ?>
<!--- 날짜 수정 끝 ----->

소스를 삽입하면 아래와 같이 됩니다.
상위 생략...

<tr>
  <td align=right class=listnum width=80><img src=images/t.gif border=0 width=80 height=1><br><b>* </b></td>
  <td>
  <table border=0 cellpadding=0 cellspacing=0>
  <tr>
    <td><?=$category_kind?></td>
    <td><?=$hide_notice_start?> <input type=checkbox name=notice <?=$notice?> value=1></td><td class=neotune-upload> 공지사항  <?=$hide_notice_end?></td>
    <td><?=$hide_html_start?> <input type=checkbox name=use_html <?=$use_html?> value=1></td><td class=neotune-upload> HTML  <?=$hide_html_end?></td>
        <td><?=$hide_secret_start?><input type=checkbox name=is_secret <?=$secret?> value=1></td><td class=neotune-upload>비공개글 <?=$hide_secret_end?></td>
    <td><input type=checkbox name=reply_mail <?=$reply_mail?> value=1></td><td class=neotune-upload> 답변메일 받기 </td>  
  </tr>
  </table>
  </td>
</tr>

<? if($member[level]< 5 && $is_admin) { ?>
<!--- 날짜 임의 수정 시작-------->
<input type=hidden name='reg_date_old' value=<?=$reg_date ?>>
<tr>
  <td align=right class=listnum width=80><img src=images/t.gif border=0 width=80 height=1><br>날짜수정 </td>
  <td>
  <table border=0 cellpadding=0 cellspacing=0>
  <tr>                            
    <td><input type="text" name="year" size="6" maxlength=4 class=input> 년 <input type="text" name="mon" size="4" maxlength=2 class=input> 월 <input type="text" name="day" size="4" maxlength=2 class=input> 일 (수정 안할시에는 그냥 놔두세요.)
    <input type="hidden" name="hour" size="2" value="0">
    <input type="hidden" name="min" size="2" value="0">
    <input type="hidden" name="sec" size="2" value="0">
    </td>                                                      
  </tr>                                                    
  </table>      
  </td>
</tr>
<!--- 날짜 임의 수정 끝 -------->
<? } ?>

<tr><td bgcolor=#ffffff height=1 colspan=2><img src=images/t.gif height=1></td></tr>
<tr>
  <td align=right class=neotune-write><b>Subject </b></td>
  <td> <input type=text name=subject value="<?=$subject?>" <?=size(60)?> maxlength=200 class=input> </td>
</tr>
<tr><td bgcolor=#ffffff height=1 colspan=2><img src=images/t.gif height=1></td></tr>
<tr>
  <td align=right class=neotune-write><b>Contents </b></td>
  <td valign=top>
  <textarea name=memo <?=size2(80)?> rows=18 class=input><?=$memo?></textarea>
  </td>
</tr>

아래 생략...

p.s. 이전에 소스를 올려놓고서 제가 관리를 못해서 죄송합니다. 이 소스대로 정확히 하신다면 틀림없이 될 것입니다.
1.새글을 작성하면 제로보드의 root 폴더인 bbs 폴더의 write.php의 파일소스 로직대로 그 새글 작성시간이 $reg_date로 database field에 저장이 됩니다.
2. 새글의 날짜를 수정하거나 수정안한다면 수정한 날짜를 $reg_date에 넣어줘야 하며, 수정안한다면 이전의 시간이 그대로 다시 입력되어야 할 것입니다.
그래서 게시판 스킨 폴더의 write.php에 삽입되는 소소를 보면
<!--- 날짜 임의 수정 시작-------->
<input type=hidden name='reg_date_old' value=<?=$reg_date ?>>
이 부분이 있는데, 이것의 의미는 이미 새글 입력시 입력된 $reg_date값을  $reg_date_old에 넣어준다는 의미입니다.
그래서 날짜 수정하거나 안하거나 한 값이 제로보드의 root 폴더인 bbs 폴더의 write_ok.php의 문서에 전달이 됩니다.
제로보드의 root 폴더인 bbs 폴더의 write_ok.php의 문서는 아래와 같은 소스가 삽입이 되어있는데...
//임의 날짜 변환
        if(!$year) {
        $reg_date= $reg_date_old;}
        else {
        $t_time = mktime($hour, $min, $sec, $mon, $day, $year);
        $reg_date=$t_time;}
만약 수정할때, 게시판 날짜를 수정안했으면 예전의 날짜가 그대로 다시 $reg_date에 저장이 되고, 수정을 했으면, 수정한 값이 $reg_date로 새롭게 저장이 됩니다.
그리하여, 그 값을 다시 database의 field에 다시 넣어주게 되는 것입니다.




    



목록보기 삭제하기

번호 제목 일자
74  [BBS_Tip] 웹에디터 기능의 제로보드 게시판 스킨  2008-04-27
73  [BBS_Tip] 제로보드 로그인 풀림 현상 해결책  2008-04-27
 [BBS_Tip] 제로보드 게시물날짜임의변경팁  2008-04-27
71  [BBS_Tip] 제로보드 카테고리 출력 함수  2008-04-27
70  [BBS_Tip] 권한밖의 게시물 클릭시 로그인창 안나오게  2008-04-27
69  [BBS_Tip] 관리자만보고싶은 내용작성시.  2008-04-27
68  [BBS_Tip] 게시물 역순 정렬방법  2008-04-27
67  [BBS_Tip] 일반페이지내 게시물 검색폼  2008-04-27
66  [BBS_Tip] 제로카운터 DB 자동삭제  2008-04-28
65  [BBS_Tip] 하나의 게시판에서 여러스킨을 적용하는 법  2008-04-28
64  [BBS_Tip] 내용없는 사진만으로도 글등록.  2008-05-02
63  [BBS_Tip] 손쉽게 질문답변 게시판 만드는 법  2008-05-22
62  [BBS_Tip] 특정게시물 끼워넣기  2008-05-25
61  [BBS_Tip] 사용권한 메세지 수정 방법.  2008-06-06
60  [BBS_Tip] 관리자아이디 변경팁  2008-06-06
59  [BBS_Tip] 이미지태그 이미지삽입시 리사이즈 & 새창보기  2008-06-07
58  [BBS_Tip] 게시물역순정렬  2007-12-06
57  [BBS_Tip] 제로보드 게시판 아이디 변경하기  2009-01-06
56  [BBS_Tip] 제로보드 현재위치 표시방법  2009-01-06
55  [BBS_Tip] 카테고리 선택 이동  2009-01-21
54  [BBS_Tip] 게시물 데이타 뽑는 여러가지  2009-02-02
53  [BBS_Tip] 제로보드 rss 생성 파일  2009-02-03
52  [BBS_Tip] 제로보드 이미지 박스 용량 늘리기  2009-02-05
51  [BBS_Tip] 제로보드 예비필드 활용  2009-02-17
50  [BBS_Tip] 제로보드 웹메일 게시판  2009-02-18
목록보기
123