게시물 DB업로드 부분 및 게시물 등록시 비밀번호 암호화 방식

안녕하세요. 게시판 커스텀을 하려고 합니다.

여러가지 문의사항 남깁니다.

1)디폴트 스킨 기준으로 게시물을 등록하면
이 내용을 DB에 등록하는 부분이 어디인지 알려주실 수 있나요??
어느 부분에서 wp_kboard_board_content 테이블에 업로드를 시키나요??

2)KBoard에서 작성된 글을 제가 만든 다른 화면에서 접근하여 게시물 내용을 확인하려고 합니다.
그렇게 하려면 게시물 password랑 사용자가 입력한 password랑 비교하는 부분이들어가야 하는데
DB에 암호화하여 들어가는 방식이 어떤 방식인지 알려주실 수 있나요?
sha1같은 방식을 사용하시는건지 알려주세요~

답변 기다리겠습니다 감사합니다!

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 답변 감사합니다!

  • 안녕하세요~^^

    1. 게시글은 KBoard 스킨과 상관없이 kboard_board_content 테이블에 저장됩니다.

    FTP로 접속해서 /wp-content/plugins/kboard/class/KBContent.class.php 파일에서

    아래의 코드가 게시물을 DB에 저장하는 코드입니다.

    public function insertContent($data = array()){
    	global $wpdb;
    	
    	if(!$data){
    		$data['board_id'] = $this->board_id;
    		$data['parent_uid'] = $this->parent_uid;
    		$data['member_uid'] = $this->member_uid;
    		$data['member_display'] = $this->member_display;
    		$data['title'] = $this->title;
    		$data['content'] = $this->content;
    		$data['date'] = date('YmdHis', current_time('timestamp'));
    		$data['update'] = $data['date'];
    		$data['view'] = 0;
    		$data['comment'] = 0;
    		$data['like'] = 0;
    		$data['unlike'] = 0;
    		$data['vote'] = 0;
    		$data['category1'] = $this->category1;
    		$data['category2'] = $this->category2;
    		$data['secret'] = $this->secret;
    		$data['notice'] = $this->notice;
    		$data['search'] = $this->search;
    		$data['thumbnail_file'] = '';
    		$data['thumbnail_name'] = '';
    		$data['status'] = $this->status;
    		$data['password'] = $this->password;
    	}
    	
    	// 입력할 데이터 필터
    	$data = apply_filters('kboard_insert_data', $data, $this->board_id);
    	
    	// sanitize
    	$data['board_id'] = isset($data['board_id'])?intval($data['board_id']):0;
    	$data['parent_uid'] = isset($data['parent_uid'])?intval($data['parent_uid']):0;
    	$data['member_uid'] = isset($data['member_uid'])?intval($data['member_uid']):0;
    	$data['member_display'] = isset($data['member_display'])?sanitize_text_field($data['member_display']):'';
    	$data['title'] = isset($data['title'])?kboard_safeiframe(kboard_xssfilter($data['title'])):'';
    	$data['content'] = isset($data['content'])?kboard_safeiframe(kboard_xssfilter($data['content'])):'';
    	$data['date'] = isset($data['date'])?sanitize_key($data['date']):date('YmdHis', current_time('timestamp'));
    	$data['update'] = isset($data['update'])?sanitize_key($data['update']):$data['date'];
    	$data['view'] = isset($data['view'])?intval($data['view']):0;
    	$data['comment'] = isset($data['comment'])?intval($data['comment']):0;
    	$data['like'] = isset($data['like'])?intval($data['like']):0;
    	$data['unlike'] = isset($data['unlike'])?intval($data['unlike']):0;
    	$data['vote'] = isset($data['vote'])?intval($data['vote']):0;
    	$data['category1'] = isset($data['category1'])?sanitize_text_field($data['category1']):'';
    	$data['category2'] = isset($data['category2'])?sanitize_text_field($data['category2']):'';
    	$data['secret'] = isset($data['secret'])?sanitize_key($data['secret']):'';
    	$data['notice'] = isset($data['notice'])?sanitize_key($data['notice']):'';
    	$data['search'] = isset($data['search'])?intval(($data['secret'] && $data['search']==1)?'2':$data['search']):'1';
    	$data['thumbnail_file'] = isset($data['thumbnail_file'])?sanitize_text_field($data['thumbnail_file']):'';
    	$data['thumbnail_name'] = isset($data['thumbnail_name'])?sanitize_text_field($data['thumbnail_name']):'';
    	$data['status'] = isset($data['status'])?sanitize_key($data['status']):'';
    	$data['password'] = isset($data['password'])?$data['password']:'';
    	
    	// 불필요한 데이터 필터링
    	$data = kboard_array_filter($data, array('board_id', 'parent_uid', 'member_uid', 'member_display', 'title', 'content', 'date', 'update', 'view', 'comment', 'like', 'unlike', 'vote', 'category1', 'category2', 'secret', 'notice', 'search', 'thumbnail_file', 'thumbnail_name', 'status', 'password'));
    	
    	if($data['board_id'] && $data['title']){
    		foreach($data as $key=>$value){
    			$value = esc_sql($value);
    			$insert_key[] = "`$key`";
    			$insert_data[] = "'$value'";
    		}
    		
    		$board = $this->getBoard();
    		$board_total = $board->getTotal();
    		$board_list_total = $board->getListTotal();
    		
    		if($this->status != 'trash'){
    			$board->meta->total = $board_total + 1;
    			$board->meta->list_total = $board_list_total + 1;
    		}
    		else{
    			$board->meta->total = $board_total + 1;
    		}
    		
    		$wpdb->query("INSERT INTO `{$wpdb->prefix}kboard_board_content` (".implode(',', $insert_key).") VALUES (".implode(',', $insert_data).")");
    		
    		$this->uid = $wpdb->insert_id;
    		
    		$this->insertPost($this->uid, $data['member_uid']);
    		
    		$wpdb->flush();
    		
    		return $this->uid;
    	}
    	return 0;
    }

     

    2. 현재 게시글에서 설정한 비밀번호는 암호화 처리를 따로 하지 않고 있습니다.

    kboard_board_content 테이블에서

    secret 컬럼이 비밀글 여부를 나타내고

    password 컬럼이 비밀글의 비밀번호를 의미합니다.

    비밀번호 암호화는 추후 적용될 예정입니다.

    고맙습니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기