ホームページ php教程 php手册 PHPCMS不显示无权限栏目对应的左侧菜单

PHPCMS不显示无权限栏目对应的左侧菜单

Jun 13, 2016 am 09:39 AM
phpcms メニュー

PHPCMS可以给某些角色设定权限,比如某些栏目对于某些角色是无法访问的。但是左侧菜单还是会显示该栏目名称,这对编辑来说是不需要的。都访问不了,还显示栏目名称干啥呢。看了一下PHPCMS的代码,简单地实现了隐藏菜单的小功能。

从后台页面可以很简单地分析出,左侧菜单的生成是用Ajax:

1

2

3

4

5

6

7

8

9

10

11

$.ajax(

{  

    type:'get',

    url:'?mod=phpcms&file=menu&action=get_menu_list&menuid='+id,

    cache:cache_refresh,

    dataType:'json',

    success:function(json)

    {

        ……

    }

}

ログイン後にコピー

请求的地址是 http://www.bkjia.com/admin.php?mod=phpcms&file=menu&action=get_menu_list&menuid=4

在URL参数中,file是指请求的控制器文件,这里menu就是指 admin/menu.inc.php这个文件,action 则是方法。我们找到 menu.inc.php 下的 get_menu_list 方法:

1

2

3

4

5

6

7

8

9

case 'get_menu_list':

    $data = $m->get_child($menuid);

    $data = str_charset(CHARSET, 'utf-8', $data);

    $max = array_slice($data, -1);

    $data['max'] = $max[0]['menuid'];

    $data = json_encode($data);

    if(PHP_OS < 5.0) header('Content-type: text/html; charset=utf-8');

    echo $data;

    break;

ログイン後にコピー

将其改为:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

case 'get_menu_list':

    $data = $m->get_child($menuid);

     

    foreach($data as $k=>$val)

    {

        if( !empty($data[$k]['keyid']) && substr( $data[$k]['keyid'], 0, 5 ) == 'catid' )

        {

            if( $data[$k]['keyid'] == 'catid_0' )

            {

                continue;

            }

            $catid = str_replace("catid_", "", $data[$k]['keyid']);

             

            // 管理权限

            $allow_manage = $priv_role->check('catid', $catid, 'manage');

             

            if(!$allow_manage)

            {

                unset($data[$k]);

            }

        }

    }

     

    $data = str_charset(CHARSET, 'utf-8', $data);

    $max = array_slice($data, -1);

    $data['max'] = $max[0]['menuid'];

    $data = json_encode($data);

    if(PHP_OS < 5.0) header('Content-type: text/html; charset=utf-8');

    echo $data;

    break;

ログイン後にコピー

代码存在投机性,但大概思路就是这样。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows 11: スタート レイアウトをインポートおよびエクスポートする簡単な方法 Windows 11: スタート レイアウトをインポートおよびエクスポートする簡単な方法 Aug 22, 2023 am 10:13 AM

Windows 11: スタート レイアウトをインポートおよびエクスポートする簡単な方法

Windows 11の右クリックメニューで「その他のオプションを表示」をデフォルトにする方法 Windows 11の右クリックメニューで「その他のオプションを表示」をデフォルトにする方法 Jul 10, 2023 pm 12:33 PM

Windows 11の右クリックメニューで「その他のオプションを表示」をデフォルトにする方法

iPhoneでメッセージを編集する方法 iPhoneでメッセージを編集する方法 Dec 18, 2023 pm 02:13 PM

iPhoneでメッセージを編集する方法

phpcmsとはどのようなフレームワークですか? phpcmsとはどのようなフレームワークですか? Apr 20, 2024 pm 10:51 PM

phpcmsとはどのようなフレームワークですか?

Windows 11 で [その他のオプションを表示] メニューを無効にする方法 Windows 11 で [その他のオプションを表示] メニューを無効にする方法 Apr 13, 2023 pm 08:10 PM

Windows 11 で [その他のオプションを表示] メニューを無効にする方法

Windows 11の右クリックコンテキストメニューから「Windowsターミナルで開く」オプションを削除する方法 Windows 11の右クリックコンテキストメニューから「Windowsターミナルで開く」オプションを削除する方法 Apr 13, 2023 pm 06:28 PM

Windows 11の右クリックコンテキストメニューから「Windowsターミナルで開く」オプションを削除する方法

純粋な CSS を使用して影付きのメニュー ナビゲーション バーを実装する実装手順 純粋な CSS を使用して影付きのメニュー ナビゲーション バーを実装する実装手順 Oct 16, 2023 am 08:27 AM

純粋な CSS を使用して影付きのメニュー ナビゲーション バーを実装する実装手順

phpcmsで詳細ページに飛ぶ方法 phpcmsで詳細ページに飛ぶ方法 Jul 27, 2023 pm 05:23 PM

phpcmsで詳細ページに飛ぶ方法

See all articles