K9 通用版 博客版 主题版 地方门户版 企业版 |   企业(ASP) 分类 使用 分享 疑问 模板 建议 帮助 错误 其他
+新建主题 [Ajax]
填写帐号密码即可完成注册
+新建话题 最新回复排序 最新主题排序 精华帖子

[6.0.813]透过cookie看用户标签的解析

1Next >

pktsandy 发表于:10-11-03 09:12 [添加收藏] 楼主 [回复] #Top#
pktsandy 人气:1181 积分:3438 金币:29313
VIP 管理团队 EST团队 技术精英 灌水狂人
需求:我需要一个用户组ID来选择显示不同的连接地址或者是访问权限

需要的文件:
/user/core.class.php
/templater 中的模板!这个自已选择
/system/js/jquery.kc.js

开始了!
所有的标签解析都是由模块文件夹/core.class.php中的
public function tag($name,$inner,$ass,$attrib)
这个函数为入口的!由它去调私有的内部函数.我这里用的是:
case 'state':$s=$this->tag_user_state($inner,$attrib);break;
也就是说我在{king:user.state}中加一个内部变量!原来有的是:{king:username/},{king:userid/}.我为她加一个{king:gid/}

所有的标签要被解析都需要模板!我们看:private function tag_user_state($inner,$attrib)

这里你就把模板想像成占位符就行!由解析模板的程序作替换.OK
    $tmp->assign('username','[USERNAME]');
    $tmp->assign('userid','[USERID]');
    $tmp->assign('gid','[GID]');        //这个是我加的
    $yes=$tmp->output($yes);

前进再前进!巴顿将军的经典思想~加了模板就需要改解析函数了!不扯了KC用的是JS来解析这个模板~因为可能在静态页中操作~哪它的数据来自哪里呢!答:Cookie.Cookie是此函数生成的:
public function infoUser($userid='')
我要改的是这行:
$array['authcookie']=$userid."t".$res['username']."t".md5($res['username'].$king->config('key'));
如果不想改下面的JS文件就把上面的作替换了!为了防止KC在某些地方需要这些项!所以我要增加.增加完的代码:
$array['authcookie']=$userid."t".$res['username']."t".md5($res['username']."t".$king->config('key'))."t".$res['gid'];//cookie中的userpass段

到此user/core.class.php中的修改完成!下面是JS文件
JS文件需要改的函数在这看:
$s="<span id="$id">{$no}</span><span id="{$id}_hide" class="none">$yes</span><script type="text/javascript">$.kc_userstate('$id')</script>";
看到$.kc_userstate('$id')了吧!到JS文件中找kc_userstate

由于我增加了项所以要改下面这个正则:
var re=new RegExp('auth_[a-zA-Z0-9]+=(\d+)\%09([a-zA-Z0-9%]{3,200})\%09(\w{32})\%09(\d+)');

当然了还要改模板的占位符(就是上面所说的解析程序.简单吧就是一个replace)
    if(auth!==null){
        var userid=RegExp.$1;
        var username=decodeURIComponent(RegExp.$2);
        var gid=RegExp.$4;        //这个我增加的
        var auth_obj=$('#'+id+'_hide');
        var auth_htm=auth_obj.html();



        auth_htm=auth_htm.replace('[USERID]',userid);
        auth_htm=auth_htm.replace('[USERNAME]',username);
        auth_htm=auth_htm.replace('[GID]',gid);        //这个我增加的
        auth_obj.html(auth_htm);
        auth_obj.show();

        $('#'+id).hide();
    }

你可能不明白上面的正则!哪你对着看下面的Cookie就可以了
2%09pktmandy%098ecf66e260e84a8bad7970b850cc8731%091

再有看不明白的请留言!有时间我会给予回复
pktsandy 发表于:10-11-03 09:13 沙发 [回复] #Top#
pktsandy 人气:1181 积分:3438 金币:29313
VIP 管理团队 EST团队 技术精英 灌水狂人
下面是KC附带的模板的样子:
{king:user.state id="userstat"}
<a href="#" class="k_user_login">登录</a>
<a href="#" class="k_user_register">注册</a>
{?king:user.state}
当前用户:{king:username/},用户ID:{king:userid/},用户组:{king:gid/}<br/>
<a href="{config:system.inst/}user/index.php">用户中心</a>
<a href="user/index.php?action=signout">退出</a>
{/king:user.state}
poprock 发表于:10-11-03 09:39 板凳 [回复] #Top#
poprock 人气:2 积分:3 金币:24
好帖啊   好好学习啊   Tks
jzhuan366 发表于:10-11-19 12:22 4楼 [回复] #Top#
jzhuan366 人气:92 积分:60 金币:734
很好。。bump
一点玉米 发表于:10-11-19 12:27 5楼 [回复] #Top#
一点玉米 人气:368 积分:43 金币:7679
EST团队
纯支持!!!
rekoe 发表于:10-12-09 00:35 6楼 [回复] #Top#
rekoe 人气:11 积分:70 金币:322
好东西。。。。。。。。。。。。。。。。
梦天 发表于:10-12-09 00:51 7楼 [回复] #Top#
梦天 人气:791 积分:3251 金币:21509
EST团队 灌水狂人
good
luke 发表于:10-12-09 21:21 8楼 [回复] #Top#
luke 人气:489 积分:1943 金币:8004
最佳新人 灌水狂人
纯支持

1Next >

发表回复

帐号 匿名发布 审核后可见 [加载完整在线编辑器]
内容
验证码
KingCMS 内容管理系统

关于我们 联系我们 广告报价 付款方式 站点导航

Copyright © 2004-2015 Focuznet All rights reserved.

广州唯众网络科技有限公司 粤ICP备08008106号