웹마스터 팁

안녕하세요 예뜨락입니다

벌써 한해가 새로 시작되었군요  올 한해는 좋은일만 거듭되길 바랍니다

아울러 지진해일로 인해 뜻하지 않은 불운을 당한 분들께 위로의 말을 전하구 싶군요 ...



전 시간까지는 글을 올리는 걸 해 봤습니다

오늘은 글 삭제 부분을 할건데

그전에 잘못된 부분이 있기에 알려드립니다

나만의 미니홈 만들기 ㅡ 기초적인 관리 페이지 에서 소스중에 mini_home_admin_table 이 아닌

mini_home_admin_table2 로 기재된 부분이 있었습니다 CL님이 알려주셔서 고쳤습니다

주로 새벽에 글을 쓰다 보니 미쳐 발견하지 못했네요 소스 적용하신 분은 고쳐 주시구 혹시라도 테이블이름 뒤에

2 라고 표기된 부분이 있으면 알려주세요 제홈에 이미 설치된 부분이 있어 테스트용으로 테이블을 만들어 쓰다보니

실수를 했네요


아무튼 오늘은 글을 삭제하기를 하겠습니다

글을 삭제할때는 홈관리자와 미니홈 관리자 그리구 글을 쓴 사람이 지울수 있게 만들면 됩니다

홈관리자나 미니홈 관리자는 로그인된 상태일것이니 문제는 글을 쓴 사람이 누구인지만 판단하면 되겠죠

그러기 위해서 로그인된 멤버가 글을 썼을 때는  회원의 제로보드 비번이나 혹은 멤버값을 같이 글을 쓸때

디비에 넣어주구 그걸 이용해 글을 지울수 있게합니다

또한  비외원이 글을 썼을 때는 비번을 써서 디비에 입력되게 합니다 비번을 입력해서 디비에 저장된 비번과

일치하면 글을 지울수 있게하는거죠

아직 패스워드란을 디비에 추가하지 않았으므로 이부분은 다음에 해보구 로그인된 멤버값으로 글을 지우게

해보겠습니다 즉 현 상태로는 비회원은 글을 쓸수는 있지만 글을 지울수는 없습니다


글을 제대로 지우기 위해서는 몇가지 조건만 맞춰주면 됩니다

글의 번호와 (디비에 올려진 번호 no 값입니다 ) 로그인된 회원의 멤버값을 알아 오면 됩니다

<?

// 절대경로 리브파일 인크루드

// DB 연결
        
//환경변수를 이용해서 편법을 이용한 글지우기 방지;

        if(!eregi($HTTP_HOST,$HTTP_REFERER)) Error("정상적으로 글을 삭제하여 주시기 바랍니다.");

// 멤버정보 구하기
        $member=member_info();
// 게시판의 정보를 불러옴 ;      
        $data=mysql_fetch_array(mysql_query("select * from member_board where board_id='$id'"));
//글번호 데이터 읽어오기;
$now_data=mysql_fetch_array(mysql_query("select * from member_get_memo where no='$no'"));


if($now_data[no]){//글번호가 있을 때;



      if(!$member[no]){//비회원일 떄 처리;
         include "패스워드 처리할파일";
         if($password!=$now_data[password]){//로그아웃된 회원이거나 비회원일 때 패스워드 묻기;;
         exit;
         }
      //디비 테이블에서 자료를 지워주는 쿼리문;
      }//비회원일 때 처리;




      else{//회원일때 처리;
         if($member[no]==1||$member[no]==$data[member_no]||$member[no]== $now_data[member_no]){//최고관리자이거나 미니홈주인이거나 글쓴 회원일때;

      //디비 테이블에서 자료를 지워주는 쿼리문;

글을 삭제후 리스트 파일로 돌리는 알러트 스크립트


         }else{//글쓴사람과 로그인된 회원이 일치하지 않을 때
        
삭제할 권한 없음 알리는 알러트 스크립트

         }
      }//회원일때 처리;



}//글번호가 있을 때;
elseif(!$now_data[no]){//글 번호 없을 때;

글이 삭제 되었다는 알림 알러트 스크립트
}

              



// MySQL 닫기
?>




위와 같은 형식을 빌어 파일을 만들어주면 됩니다

글번호 있고 없고로 나눈것은 현재 일고 있는 글을 지우려 했을때 관리자나 미니홈 관리자가 불필요한

글이라 생각해서 글 쓴사람이 지우기 전에 먼저 글을 지웠을 경우입니다 간발의 차이라고

해야하나요 ^^;;;; 굳이 넣지 않아도 되겠지만

모든 상황을 생각해서 넣는다면 좀 더 사용자 입장에 근접하겠죠

         include "패스워드 처리할파일";
         if($password!=$now_data[password]){//로그아웃된 회원이거나 비회원일 때 패스워드 묻기;;
         exit;
         }

여기서    인쿠르드 된 패스워드 입력 파일에 패스워드를 넣었을 때 디비에 입력된 패스워드와 맞는지 검사를 하게

됩니다 검사해서 값이 일치하면 이프문을 빠져 나와 다음 단계인     디비 테이블에서 자료를 지워주는 쿼리문;

을 실행하고 패스워드가 불일치하면    exit; 로 인해 더이상 디비에 접근해 자료를 지우는 진행을 하지 않구

현재의 상황을 빠져 나와 패스워드를 입력하는 창만 계속 보이게 되는거죠

수정글이나 비밀글일 때도 위와 같은 형식을 빌어서 합니다 exit 가 하나의 중요한 역활을 한다 할수 있죠


제로보드는 delete.php 와 delete_ok.php 파일로 나누어져 있습니다

제대로 된 해석일진 몰라도 delete.php에서는 글을 가져와 현재의 글을 지우려는

사람의 멤버 값을 이용해 비회원이면 인크루드 된

비밀번호 확인 창 까지 이어가게 되어 있습니다 비밀번호가 일치할 때는  delete_ok.php 로 정보를 넘겨주구요

글을 쓴 멤버이거나 최고관리자일 때는

타겟을  delete_ok.php 로 넘겨줘서 상황을 검사해 글을 지우게 됩니다

그러니 자신의 취향대로 코딩하시면 됩니다


    if($member[no]==1||$member[no]==$data[member_no]||$member[no]== $now_data[member_no]){//최고관리자이거나 미니홈주인이거나 글쓴 회원일때;


이프문으로 도배된것 중 하나입니다 이게 있어야 제어를 할수 있습니다

즉 멤버 번호가 1이거나 또는 멤버번호가 홈주인과 일치하거나 또는 멤버번호가 글쓴번호와 같을때 대괄호 안의

상황인 글을 지우는 코드를 실행하게 됩니다

== 좌우가 같을때입니다 즉 $member[no]==1 $member[no]와 1이 같다면이 되겠죠

멤버 번호 1은 제로보드의최고 관리자가 되겠죠 $data[member_no] $data 값은 member_board 테이블에서

가져온 값입니다 member_no라는 필드에 미니홈의 주인이 생성할때 그홈 주인의 멤버번호가 (제로보드 회원

멤버번호)가 들어가겠죠 그러니 위와 같이 해주면 됩니다 $now_data는 글이 담기는 테이블에서 가져오구요

글을 쓸때 회원의 멤버 번호도 입력되게 되어 있구요 다 알다시피 $member[no] 는 로그인 한 현재 자신의

회원번호입니다 그러니 로그인된 나의 멤버 번호와 맞추게 되는거죠

내가 최고 관리자면 $member[no] 값은 1입니다 그 값과 보드주인 글쓴사람등을 맞추어서 실행하는거죠

|| 는 또는 이라는 논리 연산자 입니다 or 혹은 || 로 쓰게 됩니다  불과 육개월 전만해도 ||을 키보드에서

찾지 못해서 붙여 넣기해서 했습니다 위에 있습니다


아래는 소스입니다

이하 소스
************************************************************************************************



<?

// 절대경로 리브파일 인크루드
   $_zb_url = "제로보드가 설치된 url";
   $_zb_path = "제로보드가 설치된 절대경로";


   include $_zb_path."lib.php";
// DB 연결
        if(!$connect) $connect=dbConn();

// 직접 접근이 아닌 다른 주소로 접근할 때 에러 표시 ;

        if(!eregi($HTTP_HOST,$HTTP_REFERER)) Error("정상적으로 글을 삭제하여 주시기 바랍니다.");

// 멤버정보 구하기
        $member=member_info();
// 게시판의 정보를 불러옴 ;      
        $data=mysql_fetch_array(mysql_query("select * from member_board where board_id='$id'"));
        $data[no] = stripslashes($data[no]);
        $data[name] = stripslashes($data[name]);
        $data[user_id] = stripslashes($data[user_id]);          
        $data[board_id] = stripslashes($data[board_id]);
//글번호 데이터 읽어오기;
$now_data=mysql_fetch_array(mysql_query("select * from member_get_memo where no='$no'"));


if($now_data[no]){//글번호가 있을 때;



      if(!$member[no]){//비회원일 떄 처리;
         include "password.php";
         if($password!=$now_data[password]){//로그아웃된 회원이거나 비회원일 때 패스워드 묻기;;
         exit;
         }
      //디비 테이블에서 자료를 지워주는 쿼리문;
      }//비회원일 때 처리;




      else{//회원일때 처리;
         if($member[no]==1||$member[no]==$data[member_no]||$member[no]== $now_data[member_no]){//최고관리자이거나



                 mysql_query("delete from member_get_memo2 where no='$no' and board_id='$data[board_id]'");

echo"
                  <script language="javascript">
                  window.alert("선택하신 $now_data[name]님의 글이 삭제되었습니다!!");
                  location.href='list.php?id=$id';
                  </script> ";



         }else{//글쓴사람과 로그인된 회원이 일치하지 않을 때
        
   echo"
                  <script language="javascript">
                  window.alert("삭제할 권한이 없습니다 !!");
                  location.href='list.php?id=$id';
                  </script> ";

         }
      }//회원일때 처리;



}//글번호가 있을 때;
elseif(!$now_data[no]){//글 번호 없을 때;
                  echo"                  <script language="javascript">
                  window.alert("선택하신 글이 삭제된듯 싶습니다.nn관리자에게 문의하세요!!");
                  location.href='list.php?id=$id';
                  </script> ";
}

              



// MySQL 닫기
        if($connect) mysql_close($connect);
?>



************************************************************************************************
이상 소스




다음엔 패스워드 파일을 만들구 디비에 패스워드란을 추가해 보겠습니다


이하 제 사적인 의견입니다  다소 길더래도 양해 바랍니다

거듭 말씀 드리지만  현재의 파일을 이용해서 제대로된 형태를 구현하기는 조금 벅찹니다

여러가지를 자신의 생각하는 바로 고치셔야 제대로 쓰실수 있습니다

처음 글을 쓸때  단 몇페이지에 걸쳐서 만드는 방법만 쓸까하다 궁금해 하시는 분들이 가끔 있어서

제가 일년동안 머리 싸매며 만들던걸 토대로 일종의 노하우를 알려드리는거며 어떤식으로 다듬어 나갔는지

쓰는겁니다 저 또한 php를 접한지 일년 정도 밖에 되지 않아 많이 실수하며 배우고 있습니다

2003년 7월에 제로보드를 알았으니까요

코드 또한 세련되지 못하고 필요없는 잡소스들이 많이 추가된부분도 있고 보안쪽은 더 공부해야할 부분인건

확실하구요 ^^;;;  그러니 여러분은 더 빨리 배우실수 있으실겁니다 미니홈의 개념에 대해서...


일하느라 홈 고치느라 글 쓰느라 가끔 정신이 없어서 이전에 해 놓은 소스가 잘못 적용된 부분이 있을수

있을련지 모르겠습니다 어떻게 보면 방대한 부분일 수 있기 때문예요

혹여 소스 적용중 이상이 생기면 코멘트 남겨주세요

그런점에서 CL 님께 다시 한번 감사드립니다


가끔 말없이 제 홈에 다녀간 분들이 계신데 의견을 남겨 놓으시면 좋을거 같습니다

대신 말없이 테스트하기 위해 가입하구 임의로 미니홈을 생성한 분도 계시더군요

아직 회원가입을 받고 싶지 않아 홈자체를 만들어 놓지 않았는데 페이지 찾아서 가입하고 저도 모르게

미니홈까지 생성해서 둘러보구 가신분이 있어서 제 기분에 의해 삭제 처리했습니다

필요하신 분은 제홈에 글을 남겨 주세요 테스트 아이디 알려 드릴테니까요 제발 저 모르게 뒷문으로

들어오지 마세요 ㅠ.ㅜ 기분이 아주 묘합니다

처음엔 혼자 만들어서 쓸 요량으로 하나 둘 소스를 첨가하던 것이 이미 어느 정도의 형태를 이루어

제법 모양새는 갖추게 되었습니다  같이 공유하는 것도 괜챦을듯 해서 플러그인으로 준비중이구요 그러다

보니 이것 저것 추가하고 그래서 더 시간이 걸립니다

관리자 입장에서 모든걸 상황에 맞게 만들다 본니 더하네요 워낙 PHP 지식이 짧은데다 모르는 부분도 있어서

일일이 참조할 만한 걸 찾아서 하다 보니...

이런 이런 걸 해 보면 좋겠다란 의견을 제 홈에 써주시면 참조하겠습니다



더불어 제가 쓴 글을 조금이라도  더 이해하구 싶은신 분은 따로 공부해 보는 것도 괜챦습니다

이곳 게시판에서 행복한 고니님 글하고 한꼬마님 글  손병목님 TheMics Mr. JH님 글을 한번씩 읽어 보시면 도움이 많이 됩니다


올 한해도 엔지오 가족 여러분  건강 하시길 바랍니다...
제목 글쓴이 날짜
나만의 미니홈 만들기 ㅡ 메인 기초 설계 .home.php [12] file 예뜨락 2004.11.17
나만의 미니홈 만들기 ㅡ 메인 기초 설계2 .레이아웃 예뜨락 2004.11.18
나만의 미니홈 만들기 ㅡ 메인 기초 설계3 .레이아웃 [2] file 예뜨락 2004.11.19
나만의 미니홈 만들기 ㅡ 기초적인 관리 페이지 [3] file 예뜨락 2004.11.20
나만의 미니홈 만들기 ㅡ 미니홈 생성 페이지 [3] file 예뜨락 2004.11.20
나만의 미니홈 만들기 ㅡ 게시판의 디자인 file 예뜨락 2004.11.22
나만의 미니홈 만들기 ㅡ 게시판 list.php 파일의 모양새 [6] 예뜨락 2004.11.23
나만의 미니홈 만들기 ㅡ list.php , 디비 테이블 생성 [6] file 예뜨락 2004.11.26
나만의 미니홈 만들기 ㅡ view.php 파일과 제목링크 [9] file 예뜨락 2004.11.27
나만의 미니홈 만들기 ㅡ write.php 파일과 write_ok [5] 예뜨락 2004.11.30
실명 진위여부 확인 [10] piasol 2004.12.01
개판 오분전 라인 그래프 [4] 미친개 2004.12.01
'참조'에 관한 간단한 예제 플로렐라 2004.12.09
4. 쿼리문 [6] 티다 2004.12.11
나만의 미니홈 만들기 ㅡ메뉴에 게시판 연결 [5] file 예뜨락 2004.12.17
IE 에서도 투명 알파값이 적용된 PNG 이미지를 맘껏 활용하자! [8] file THE PAPER™ 2004.12.27
"를 그냥 사용하기 [3] 추천대화상대 2005.01.02
나만의 미니홈 만들기 ㅡ delete.php 파일 [2] 예뜨락 2005.01.03
퍼미션을 보기좋게 구하자! [4] 플로렐라 2005.01.03
PHP 왕초보 입문기(총괄) [4] file 하나둘 2005.01.15