게시물 작성자 활동정지 시키기에서 문제점.
관련링크
본문
해당 제작자가 오랫동안 활동안해서 문의하기가 어렵네요.
우선은
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('존재하지 않는 회원이거나, 관리자의 아이디입니다.');
$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'])) {