[转载]从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 ''; } };