여기 내 문제가 있습니다. 이 두 테이블과 PHP 코드가 있습니다.PHP MYSQL의 메뉴에 대한 사용자 액세스 권한
테이블
menu
====
m_id menu_name parent_menu_id menu_order menu_url status
1 M1 0 1 # 1
2 M2 0 2 # 1
3 S1 1 1 # 1
4 S2 1 2 # 1
user_rights
===========
user_id rights
1 1,2,3,4
2 1,2,3
CODE
<?php
$get_user_id = $_GET['id']; // user id will be 1 or 2
mysql_connect("localhost", "root", "password") or die(mysql_error());
mysql_select_db("booksdb") or die(mysql_error());
$get_access_query = mysql_query("SELECT rights FROM user_rights where user_id='".$get_user_id."'");
$fetch_access_list = mysql_fetch_row($get_access_query);
$get_access_list = $fetch_access_list[0];
?>
<div id='mymenuclass'>
<ul>
<?php
foreach (explode(',', $get_access_list) as $n) {
$get_main_menu_query = mysql_query("SELECT * FROM menu where m_id='".$n."' and parent_menu_id='0' order by menu_order");
$get_main_menu = mysql_fetch_assoc($get_main_menu_query);
?>
<li class='has-sub'><a href='#'><span><?php echo $get_main_menu['menu_name']; ?></span></a>
<ul>
<?php
$get_sub_menu = mysql_query("SELECT * FROM menu_master where parent_menu_id='".$get_main_menu['m_id']."'");
while($row = mysql_fetch_assoc($get_sub_menu)) {
?>
<li class='has-sub'><a href='<?php echo $row['menu_url']; ?>'><span><?php echo $row['menu_name']; ?></span></a></li>
<?php } ?>
</ul>
</li>
<?php } ?>
</ul>
</div>
위의 쿼리는 첫 번째 수준 메뉴 잘 작동합니다. 그러나 서브 메뉴에 관해서는 모든 서브 메뉴를 표시하고 있습니다. 내가 잘못 된 곳을 모른다. 예를 들어
: user_id = 2
은 1, 2, 3하지만 내 위의 코드는 1,2,3에 대한 권한을 부여하고 4.
내가 그것을 어떻게
을 제한 할 수 있습니다 만 메뉴에 액세스 할 수 있습니까?어떤 도움이 필요합니까? 감사합니다,
Kimz
참고 :
내 코드는 정말 한심한입니다. 그것은 당신 같은 전문가를 혼란스럽게 할 것입니다. 하지만 제 요구 사항은 위에 설명되어 있습니다. 도와주세요. 당신에게 보상을 줄 수 있습니다.)
부모 메뉴 id = 1에 대한 액세스 권한이있는 경우이 쿼리를 통해 내 부 메뉴를 제공하겠습니까? 'SELECT * FROM 메뉴에서 m_id = ' ". $ n."' ' –
그럴 수는 없습니다. 각 메뉴는 user_rights 테이블로 점검해야합니다. 각 메뉴 (서브 메뉴 포함)는 인증 될 것입니다 – user3350885
@RoyalBg 저는 PHP 코드를 다시 편집했습니다. – user3350885