你现在的位置:首页 > PHP网站建设知识库 > UCenter Home > 正文

实现uchome发布文章是隐私权限的方法

展示位置:

\

Uchome 日志隐私设置实现方法总结:

1.数据库字段 uchome_blog表: 
a) friend(不可缺少字段)  
作用:权限识别  
0 => 全站会员可见
                1 => 全好友可见
                2 => 指定好友可见
                3 => 仅自己可见
                4 => 凭密码可见
b) target_ids  如果 friend=2 (指定好友可见) 
作用: 用于存储指定好友的  ID 参数
c) password  如果 friend=4 (凭密码可见)
作用: 存储日志发布者设置的密码
2. 后台处理文件 source/function_blog.php 代码如下:

//隐私  
    $POST['target_ids'] = '';  
    if($POST['friend'] == 2) {  
        //特定好友  
        $uids = array();  
        $names = empty($_POST['target_names'])?array():explode(' ', str_replace(cplang('tab_space'), ' ', $_POST['target_names']));  
        if($names) {  
            $query = $_SGLOBAL['db']->query("SELECT uid FROM ".tname('space')." WHERE username IN (".simplode($names).")");  
            while ($value = $_SGLOBAL['db']->fetch_array($query)) {  
                $uids[] = $value['uid'];  
            }  
        }  
        if(empty($uids)) {  
            $POST['friend'] = 3;//仅自己可见  
        } else {  
            $POST['target_ids'] = implode(',', $uids);  
        }  
    } elseif($POST['friend'] == 4) {  
        //加密  
        $POST['password'] = trim($POST['password']);  
        if($POST['password'] == '') $POST['friend'] = 0;//公开  
    }  
    if($POST['friend'] !== 2) {  
        $POST['target_ids'] = '';  
    }  
    if($POST['friend'] !== 4) {  
        $POST['password'] == '';  
    }  


3. 当用户查看日志信息是访问页面 space_blog.php 
检查权限与密码 日志密码是通过 cookie将加密的密码串过来的:

//检查好友权限  
    if(!ckfriend($blog)) {  
        //没有权限  
        include template('space_privacy');  
        exit();  
    } elseif(!$space['self'] && $blog['friend'] == 4) {  
        //密码输入问题  
        $cookiename = "view_pwd_blog_$blog[blogid]";  
        $cookievalue = empty($_SCOOKIE[$cookiename])?'':$_SCOOKIE[$cookiename];  
        if($cookievalue != md5(md5($blog['password']))) {  
            $invalue = $blog;  
            include template('do_inputpwd');  
            exit();  
        }  
    }  

 

4 如果 friend=4 需要凭密码查看 页面跳转到  do_inputpwd.htm  页面查看会员输入密码 提交到 do.php 跳转相应的处理页面(do_inputpwd.php)进行密码的 cookie 设置,代码说明:

if(submitcheck('pwdsubmit')) {  
  
    $blogid = empty($_POST['blogid'])?0:intval($_POST['blogid']);  
    $albumid = empty($_POST['albumid'])?0:intval($_POST['albumid']);  
      
    $itemarr = array();  
    if($blogid) {  
        $query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('blog')." WHERE blogid='$blogid'");  
        $itemarr = $_SGLOBAL['db']->fetch_array($query);  
        $itemurl = "space.php?uid=$itemarr[uid]&do=blog&id=$itemarr[blogid]";  
        $cookiename = 'view_pwd_blog_'.$blogid;  
    } elseif($albumid) {  
        $query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('album')." WHERE albumid='$albumid'");  
        $itemarr = $_SGLOBAL['db']->fetch_array($query);  
        $itemurl = "space.php?uid=$itemarr[uid]&do=album&id=$itemarr[albumid]";  
        $cookiename = 'view_pwd_album_'.$albumid;  
    }  
      
    if(empty($itemarr)) {  
        showmessage('news_does_not_exist');  
    }  
      
    if($itemarr['password'] && $_POST['viewpwd'] == $itemarr['password']) {  
        ssetcookie($cookiename, md5(md5($itemarr['password'])));  
        showmessage('proved_to_be_successful', $itemurl);  
    } else {  
        showmessage('password_is_not_passed', $itemurl);  
    }  
}  


至此通过密码登录的全过程处理完成~  希望对有需要的人有所提示!!