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