관리자화면 메뉴 제어하기에 대한 질문입니다. 정보
관리자화면 메뉴 제어하기에 대한 질문입니다.
본문
오류가 나는곳의 주소를 알려주시면 더 빠르고 정확하게 답변 받을 수 있습니다.
오류 주소 :
관리자 화면을 레벨별로 임의의 접근권한으로 지정해서 메뉴를 보여주는 것을 선택할 수 있게 하려고 합니다.
레벨별 접근은 가능한데요.
여기서 g4_gc라는 테이블에 gc_access1과 gc_access2라는 필드를 만들어서 각 필드에 0 또는 1이 입력되게 만들었습니다. g4_gc라는 테이블은 그룹의 기능과 비슷합니다.
만약 레벨이 5이상이면서 gc_access1에 1이 입력되었을 때 메뉴 보여주기는
admin.menu100.php에 array("300300", "접근테스트", "$g4[admin_path]/5_2_2_list.php",5,"",1)
이런식으로 추가를 해주면 레벨 5이상이면서 gc_access1에 1이 입력된 그룹의 사람들만 메뉴를 볼 수 있게 하려고 합니다.
문제는 레벨만 적용하면 동작을 합니다.
그런데, gc_access1에 해당 하는 부분에 0을 제외한 숫자가 기입되면 메뉴는 보이지 않기는 한데,
모든 사람이 다 보이지 않더라구요. 최고관리자도 선택한 메뉴가 보이지 않아요.
조금 내용이 길기는 하지만, 아래 부분 좀 봐 주세요....
아래와 같이 일단 admin.head.php에서 회원의 gc_access1과 gc_access2의 값을 불러왔습니다.
$sql = "select gc_access1 , gc_access2 from g4_gc order by gc_state , gc_name";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$gc_access1 = $row["gc_access1"];
$gc_access2 = $row["gc_access2"];
그리고 아래와 같이 print_menu2부분을 수정을 했습니다.
function print_menu2($key, $no)
{
global $menu , $auth_menu , $is_admin, $auth , $g4 , $member , $gc_access1 , $gc_access2;
$str = "";
for($i=1; $i<count($menu[$key]); $i++)
{
//레벨을 정의 레벨이상만 보여준다
if ($member[mb_level]<$menu[$key][$i][4])
continue;
if ($gc_access1 < $menu[$key][$i][5])
continue;
if ($gc_access2 < $menu[$key][$i][6])
continue;
if ($menu[$key][$i][0] == "-")
$str .= "<tr><td class=bg_line{$no}></td></tr>";
else
{
$span1 = $span2 = "";
if (isset($menu[$key][$i][3]))
{
$span1 = "<span style='{$menu[$key][$i][3]}'>";
$span2 = "</span>";
}
$str .= "<tr><td class=bg_menu{$no}>";
if ($no == 2)
$str .= " <img src='{$g4[admin_path]}/img/icon.gif' align=absmiddle> ";
$str .= "<a href='{$menu[$key][$i][2]}' style='color:#555500;'>{$span1}{$menu[$key][$i][1]}{$span2}</a></td></tr>";
$auth_menu[$menu[$key][$i][0]] = $menu[$key][$i][4];
}
}
return $str;
}
오류 주소 :
관리자 화면을 레벨별로 임의의 접근권한으로 지정해서 메뉴를 보여주는 것을 선택할 수 있게 하려고 합니다.
레벨별 접근은 가능한데요.
여기서 g4_gc라는 테이블에 gc_access1과 gc_access2라는 필드를 만들어서 각 필드에 0 또는 1이 입력되게 만들었습니다. g4_gc라는 테이블은 그룹의 기능과 비슷합니다.
만약 레벨이 5이상이면서 gc_access1에 1이 입력되었을 때 메뉴 보여주기는
admin.menu100.php에 array("300300", "접근테스트", "$g4[admin_path]/5_2_2_list.php",5,"",1)
이런식으로 추가를 해주면 레벨 5이상이면서 gc_access1에 1이 입력된 그룹의 사람들만 메뉴를 볼 수 있게 하려고 합니다.
문제는 레벨만 적용하면 동작을 합니다.
그런데, gc_access1에 해당 하는 부분에 0을 제외한 숫자가 기입되면 메뉴는 보이지 않기는 한데,
모든 사람이 다 보이지 않더라구요. 최고관리자도 선택한 메뉴가 보이지 않아요.
조금 내용이 길기는 하지만, 아래 부분 좀 봐 주세요....
아래와 같이 일단 admin.head.php에서 회원의 gc_access1과 gc_access2의 값을 불러왔습니다.
$sql = "select gc_access1 , gc_access2 from g4_gc order by gc_state , gc_name";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$gc_access1 = $row["gc_access1"];
$gc_access2 = $row["gc_access2"];
그리고 아래와 같이 print_menu2부분을 수정을 했습니다.
function print_menu2($key, $no)
{
global $menu , $auth_menu , $is_admin, $auth , $g4 , $member , $gc_access1 , $gc_access2;
$str = "";
for($i=1; $i<count($menu[$key]); $i++)
{
//레벨을 정의 레벨이상만 보여준다
if ($member[mb_level]<$menu[$key][$i][4])
continue;
if ($gc_access1 < $menu[$key][$i][5])
continue;
if ($gc_access2 < $menu[$key][$i][6])
continue;
if ($menu[$key][$i][0] == "-")
$str .= "<tr><td class=bg_line{$no}></td></tr>";
else
{
$span1 = $span2 = "";
if (isset($menu[$key][$i][3]))
{
$span1 = "<span style='{$menu[$key][$i][3]}'>";
$span2 = "</span>";
}
$str .= "<tr><td class=bg_menu{$no}>";
if ($no == 2)
$str .= " <img src='{$g4[admin_path]}/img/icon.gif' align=absmiddle> ";
$str .= "<a href='{$menu[$key][$i][2]}' style='color:#555500;'>{$span1}{$menu[$key][$i][1]}{$span2}</a></td></tr>";
$auth_menu[$menu[$key][$i][0]] = $menu[$key][$i][4];
}
}
return $str;
}
댓글 전체
if ($gc_access1 < $menu[$key][$i][5])
if ($gc_access2 < $menu[$key][$i][6])
두개 조건문 ==로 해줘야 하는게 맞는거 아닌가요...??0,1 둘중 하나니깐...아니면..<=로..
아니면....ㅈㅅ요..ㅋ
if ($gc_access2 < $menu[$key][$i][6])
두개 조건문 ==로 해줘야 하는게 맞는거 아닌가요...??0,1 둘중 하나니깐...아니면..<=로..
아니면....ㅈㅅ요..ㅋ