[转载]从cookie中读取uin需要注意的问题 - tenfyguo的技术专栏 - 博客频道 - CSDN.NET

baacloud免费翻墙vpn注册使用

[转载]从cookie中读取uin需要注意的问题 – tenfyguo的技术专栏 – 博客频道 – CSDN.NET.

问题的产生:

用户登录站点后,系统会在cookie植入对应的uin,其值的形式是oxxxxxxxxxx,xxx是对应的qq号码,如果不满足10位,则前面补充0,那么前端是可以通过js从cookie读取对应的qq号码的。

 

之前的读取方法:

    /* 
    * 获取uin 
    */  
    function getUin() {  
       var uin  = QQVIP.cookie.get("uin");  
       if(uin == null || uin =='' || uin.length < 7) {  
         return '';  
       }  
      
       try {  
           uin = QQVIP.string.trim(uin.substr(2));  
           return uin;  
       }catch(e){  
           return '';  
       }  
    };  

很明显,该方法是从uin的第二位开始读取认为是qq号码,对9位号码,该API是ok的,如uin=o0123456789,则可以读取出对应的uin,

但对于22亿的10位号码,则明显将会被截断。

那么新的解决方法是什么?

    /* 
    * 获取uin 
    */  
    function getUin() {  
       var uin  = QQVIP.cookie.get("uin");  
       if(uin == null || uin =='' || uin.length < 7) {  
         return '';  
       }  
      
       try {  
      
    //注意,该方法是从cookie中读取qq号码,对于少于10位的qq号码,  
    //前面是补0,对于10位的号码,则前面没有补0,使得oxxxx,其中xxx保  
    //留10位,所以统一从第二位读取qq号码是有问题的,正确的  
    //是:parseInt(QQVIP.string.trim(uin.substr(1)),10);  
    //注意调用parseInt函数,第二个参数必须输入10,以表示是按照10进制  
    //进行转换,否则以0开始的数字串会被认为是按八进制进行转换。  
    uin = parseInt(QQVIP.string.trim(uin.substr(1)),10);  
    return uin;  
      
       }catch(e){  
           return '';  
       }  
    };  
赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏