게시물 작성자 활동정지 시키기에서 문제점.

게시물 작성자 활동정지 시키기에서 문제점.

QA

게시물 작성자 활동정지 시키기에서 문제점.

본문

해당 제작자가 오랫동안 활동안해서 문의하기가 어렵네요.

 

우선은


for ($i=0; $i<count($mb_id); $i++) {
    $mb = get_member($mb_id[$i]);
    if (!$mb['mb_id'] || $mb['mb_id'] == $is_admin) {
        alert_close('존재하지 않는 회원이거나, 관리자의 아이디입니다.');
    } else {
        $end_date = date("Y-m-d", strtotime("+{$mb_active_date} days"));
        $sql = " insert into {$g5['active_table']}
                 set ma_object_id = '{$mb_id[$i]}',
                     ma_object_nick = '{$mb['mb_nick']}',
                     ma_mb_sau_opt = '{$mb_active_opt}',
                     ma_mb_memo = '{$mb_active_memo}',
                     ma_mb_active_date = '{$mb_active_date}',
                     ma_mb_id = '{$member['mb_id']}',
                     ma_mb_nick = '{$member['mb_nick']}',
                     ma_ip = '{$_SERVER['REMOTE_ADDR']}',
                     ma_date = '".G5_TIME_YMDHIS."',
                     ma_end_date = '{$end_date}'
                     ";
        sql_query($sql);
        sql_query(" update {$g5['member_table']} set mb_active = '{$end_date}' where mb_id = '{$mb_id[$i]}' ");
    }
}
alert_close('성공적으로 반영되었습니다.');

 

 

관리자에게 활동정지 시키면

 

존재하지 않는 회원이거나, 관리자의 아이디입니다.

 

띄워야 되는데. 그거 넘어가버리고 반영되어버리네요.

 

존재하지 않는 회원이거나 관리자 일때

 

"존재하지 않는 회원이거나, 관리자의 아이디입니다."

 

메시지 띄우면서 반영하지 않게 하고.

 

일반 회원일때

 

"성공적으로 반영되었습니다."

 

메시지 띄우면서 반영되게 하려면.. 어디서 손봐야 할까요?

 

완전 초짜라서 자세히 알려주시면 고맙겠습니다.

 

 

이 질문에 댓글 쓰기 :

답변 6


$mb['mb_id'] == $is_admin <--이 코드 자체가 틀린 코드입니다
 
$n=0;
if (!$mb['mb_id'] || !is_admin($mb['mb_id']) ) {
        continue; //<--이렇게 해야 나머지 처리를 하게 됩니다 
} else { $n++
~~
}
if($n>0) alert_close('성공적으로 반영되었습니다.');
else alert_close('존재하지 않는 회원이거나, 관리자의 아이디입니다.');
 


$n=0;
for ($i=0; $i<count($mb_id); $i++) {
	$mb = get_member($mb_id[$i]);
	if (!$mb['mb_id'] || is_admin($mb['mb_id'])) {
		continue;
	} else {
		$n++;
		$end_date = date("Y-m-d", strtotime("+{$mb_active_date} days"));
		$sql = " insert into {$g5['active_table']}
				 set ma_object_id = '{$mb_id[$i]}',
					 ma_object_nick = '{$mb['mb_nick']}',
					 ma_mb_sau_opt = '{$mb_active_opt}',
					 ma_mb_memo = '{$mb_active_memo}',
					 ma_mb_active_date = '{$mb_active_date}',
					 ma_mb_id = '{$member['mb_id']}',
					 ma_mb_nick = '{$member['mb_nick']}',
					 ma_ip = '{$_SERVER['REMOTE_ADDR']}',
					 ma_date = '".G5_TIME_YMDHIS."',
					 ma_end_date = '{$end_date}'
					 ";
		sql_query($sql);
		sql_query(" update {$g5['member_table']} set mb_active = '{$end_date}' where mb_id = '{$mb_id[$i]}' ");
	}
}
if ($n>0) alert_close('성공적으로 반영되었습니다.'); 
else alert_close('존재하지 않는 회원이거나, 관리자의 아이디입니다.');


답변해주셔서 감사합니다. ㅠ.ㅠ

이렇게 하는거 맞나요?

문제는 최고관리자만 적용한 상태고

그룹관리자나 보드관리자는 적용안되네요. ㅠ.ㅠ

다른 방법으로 회원등급 7등급 이상은 해보려다

이렇게

if (!$mb['mb_id'] || is_admin($mb['mb_id']) || $member['mb_level'] > 7 ) {

해도 안되네요.

$n=0; <--여기가 for문 위 아닌가요? 아이구
for ($i=0;

그룹관리자나 보드관리자는 적용안되네요. ㅠ.ㅠ <--그럴리가요
is_admin($mb['mb_id']) 는 최고관리자, 그룹, 게시판 관리자 모두 찾아옵니다

다른 방법으로 회원등급 7등급 이상은 해보려다<---
if (!$mb['mb_id'] || $mb['mb_level'] >= 7 ) {

관리자 구분을 못하는게 아니라
else 구문에 있는 쿼리가 원하는 것과 맞지않는 것은 아닌가요?

$is_admin은 return 값이 super, group, board 중 하나 입니다.

is_admin($mb['mb_id']) == 'super' 와 같이 비교하셔야 됩니다.

제 생각엔 $config['cf_admin']으로 되어 있었다면 소스상의 문제는 없어보입니다.

$mb['mb_id'] 값과 $config['cf_admin'] 값을 echo 로 출력해보세요
디버깅을 해서 값이 제대로 나오는지 확인해봐야지만 초짜에서 벗어날 수 있습니다.

 

if (!$mb['mb_id'] || ($mb['mb_id'] == $config['cf_admin'])) 
이와 같은 방식으로도 적용해보세요

일단 for문에 안에서 메세지를 띄우는 건 추천드리지 않습니다

for문을 돌리기 전에 

배열을 하나 만들어 놓고 없는 아이디이거나 관리자이면 continue 하시고 해당 아이디를 배열에 포함시킨 후 for문 종료 후 메세지를 구성하시면 됩니다

$is_admin 은 현재 로그인한 유저가 관리자인지 아닌지를 나타내는 변수입니다.

특정 ID 가 관리자에 속하는 ID 인지를 알려면 is_admin() 함수를 이용합니다.

 

if (!$mb['mb_id'] || $mb['mb_id'] == $is_admin) {
->
if (!$mb['mb_id'] || is_admin($mb['mb_id'])) {

안녕하세요! 언젠가 이 글을 보실지는 모르겠지만 같은 내용에 대해 고민을 해본입장에서

개척자입장의 언젠간 님께 질문좀 드려봅니다 ㅠ.ㅠ

우선 관련링크인 https://sir.kr/g5_skin/25575  에 대해 잘 설치하고 끝냈습니다.

 

문제는 회원정지이후 / 과연 원본대로 한다면 시간이 지난후 정지가 풀리는가? 이것이 첫번째 의문점이고

두번째로는 수동으로 해제할경우 // 정지된 회원들이 전체해제가 된다는점에 있어요.

 

관련쿼리문은 member_active_list_update.php에 있는데

 

sql_query(" update {$g5['member_table']} set mb_active = '' where mb_id = '{$ma_object_id[$i]}' ");
sql_query(" update {$g5['active_table']} set ma_status = '3' where ma_object_id = '{$ma_object_id[$i]}' and ma_id = '{$chk[$i]}' ");

 

두개의 쿼리문에서 /

위에는 member_table안에 mb_active컬럼기록인데 이것이 삭제되면 풀리는 역할로 알고 있어요

그 값을 아래 쿼리문에서 넘겨받아 들어가는거 같은데..

이걸 두개를 어떤식으로 정의하셨는지 궁금해서 ㅠ ㅠ 글을 남겨봅니다

 

답변을 작성하시기 전에 로그인 해주세요.
전체 422
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT