我现在的问题是怎么做才合理,具体在HTML里如何实现选人的操作?

解决方案 »

  1.   

    具体 = 烦人
    先将所有人分组加tag
    像blog文章分类更改权限时可以设定预设权限, allow all 或 deny all
    之后用 tag , 分类 , 人名 做filter
    再一个个或全组做设定
      

  2.   


    通常MARK就是接分的意思,很少有做标记的。
      

  3.   

    如果真是简简单单我就没有必要在此发帖求助了,如果是真的具体到人,存储倒不是问题,就是管理员在web端选人,如何实现直观快捷的选人没有好的办法!
    难道大家就做过比较细致的权限控制吗?
      

  4.   

    基于角色的权限控制
    <?php
    // FleaPHP Framework
    //
    // Copyright (c) 2005 - 2007 FleaPHP.org (www.fleaphp.org)
    //
    // 许可协议,请查看源代码中附带的 LICENSE.txt 文件,
    // 或者访问 http://www.fleaphp.org/ 获得详细信息。class FLEA_Rbac
    {
        var $_sessionKey = 'RBAC_USERDATA';    var $_rolesKey = 'RBAC_ROLES';    function FLEA_Rbac()
        {
            $this->_sessionKey = FLEA::getAppInf('RBACSessionKey');
            if ($this->_sessionKey == 'RBAC_USERDATA') {
                trigger_error(_ET(0x0701005), E_USER_WARNING);
            }
        }    function setUser($userData, $rolesData = null)
        {
            if ($rolesData) {
                $userData[$this->_rolesKey] = $rolesData;
            }
            $_SESSION[$this->_sessionKey] = $userData;
        }    function getUser()
        {
            return isset($_SESSION[$this->_sessionKey]) ?
                    $_SESSION[$this->_sessionKey] :
                    null;
        }    function clearUser()
        {
            unset($_SESSION[$this->_sessionKey]);
        }    function getRoles()
        {
            $user = $this->getUser();
            return isset($user[$this->_rolesKey]) ?
                    $user[$this->_rolesKey] :
                    null;
        }    function getRolesArray()
        {
            $roles = $this->getRoles();
            if (is_array($roles)) { return $roles; }
            $tmp = array_map('trim', explode(',', $roles));
            return array_filter($tmp, 'trim');
        }    function check(& $roles, & $ACT)
        {
            $roles = array_map('strtoupper', $roles);
            if ($ACT['allow'] == RBAC_EVERYONE) {
                // 如果 allow 允许所有角色,deny 没有设置,则检查通过
                if ($ACT['deny'] == RBAC_NULL) { return true; }
                // 如果 deny 为 RBAC_NO_ROLE,则只要用户具有角色就检查通过
                if ($ACT['deny'] == RBAC_NO_ROLE) {
                    if (empty($roles)) { return false; }
                    return true;
                }
                // 如果 deny 为 RBAC_HAS_ROLE,则只有用户没有角色信息时才检查通过
                if ($ACT['deny'] == RBAC_HAS_ROLE) {
                    if (empty($roles)) { return true; }
                    return false;
                }
                // 如果 deny 也为 RBAC_EVERYONE,则表示 ACT 出现了冲突
                if ($ACT['deny'] == RBAC_EVERYONE) {
                    FLEA::loadClass('FLEA_Rbac_Exception_InvalidACT');
                    __THROW(new FLEA_Rbac_Exception_InvalidACT($ACT));
                    return false;
                }            // 只有 deny 中没有用户的角色信息,则检查通过
                foreach ($roles as $role) {
                    if (in_array($role, $ACT['deny'], true)) { return false; }
                }
                return true;
            }        do {
                // 如果 allow 要求用户具有角色,但用户没有角色时直接不通过检查
                if ($ACT['allow'] == RBAC_HAS_ROLE) {
                    if (!empty($roles)) { break; }
                    return false;
                }            // 如果 allow 要求用户没有角色,但用户有角色时直接不通过检查
                if ($ACT['allow'] == RBAC_NO_ROLE) {
                    if (empty($roles)) { break; }
                    return false;
                }            if ($ACT['allow'] != RBAC_NULL) {
                    // 如果 allow 要求用户具有特定角色,则进行检查
                    $passed = false;
                    foreach ($roles as $role) {
                        if (in_array($role, $ACT['allow'], true)) {
                            $passed = true;
                            break;
                        }
                    }
                    if (!$passed) { return false; }
                }
            } while (false);        // 如果 deny 没有设置,则检查通过
            if ($ACT['deny'] == RBAC_NULL) { return true; }
            // 如果 deny 为 RBAC_NO_ROLE,则只要用户具有角色就检查通过
            if ($ACT['deny'] == RBAC_NO_ROLE) {
                if (empty($roles)) { return false; }
                return true;
            }
            // 如果 deny 为 RBAC_HAS_ROLE,则只有用户没有角色信息时才检查通过
            if ($ACT['deny'] == RBAC_HAS_ROLE) {
                if (empty($roles)) { return true; }
                return false;
            }
            // 如果 deny 为 RBAC_EVERYONE,则检查失败
            if ($ACT['deny'] == RBAC_EVERYONE) {
                return false;
            }        // 只有 deny 中没有用户的角色信息,则检查通过
            foreach ($roles as $role) {
                if (in_array($role, $ACT['deny'], true)) { return false; }
            }
            return true;
        }    function prepareACT($ACT)
        {
            $ret = array();
            $arr = array('allow', 'deny');
            foreach ($arr as $key) {
                do {
                    if (!isset($ACT[$key])) {
                        $value = RBAC_NULL;
                        break;
                    }                if ($ACT[$key] == RBAC_EVERYONE || $ACT[$key] == RBAC_HAS_ROLE
                        || $ACT[$key] == RBAC_NO_ROLE || $ACT[$key] == RBAC_NULL) {
                        $value = $ACT[$key];
                        break;
                    }                $value = explode(',', strtoupper($ACT[$key]));
                    $value = array_filter(array_map('trim', $value), 'trim');
                    if (empty($value)) { $value = RBAC_NULL; }
                } while (false);
                $ret[$key] = $value;
            }        return $ret;
        }
    }
      

  5.   

    web端的选人不是很困难吧。比如按部门分好,每个人前面加个checkbox就行。
    关键是权限控制怎么做需要好好设计一下。
      

  6.   

    页面提供人员的列表,可以显示不同种类、部门的人,或者也可以通过条件检索某一类人,然后每个人前面加个checkbox,利用js来控制选择(全选、选择一列、选择一行等),然后post到处理程序中,把接收到的人员权限更改即可
      

  7.   

    基本上用树形checkbox就可以了~~
    全部作为根,每个部门一个节点,每个人作为叶子节点。然后选择的时候,如果直接在根上的 checkbox 勾选,就是全选,勾选某个部门,就是全选下级节点。这个用 js 配合递归就可以实现。