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

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

QA

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

답변 5

본문

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

 

우선은


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('성공적으로 반영되었습니다.');

 

 

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

 

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

 

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

 

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

 

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

 

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

 

일반 회원일때

 

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

 

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

 

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

 

 

이 질문에 댓글 쓰기 :

답변 5


$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'])) {

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 31
© SIRSOFT
현재 페이지 제일 처음으로