我正在尝试为我的网站创建我自己的分析脚本,为此,我试图组合一种创建userID和sessionID的方法。
但是我不确定我是否正确地完成了。
我正在尝试:-检查用户是否设置了用户ID(如果没有设置)。设置它。-检查用户是否有一个sessionID,它没有设置。-将userID设置为跟随该用户,该用户在多次访问中继续保持该userID,其中sessionID对于每次访问都是唯一的。
if( getCookie('yb_uid') != null) {
if( getCookie('yb_sid') != null ) {
setCookie('yb_uid', getCookie('yb_uid'), 730);
setSessionCookie(getCookie('yb_sid'));
} else {
setCookie('yb_uid', getCookie('yb_uid'), 730);
setSessionCookie(setSID());
}
} else {
setCookie('yb_uid', setUID(),730);
setSessionCookie(setSID());
}
if( getCookie('yb_sid') == null || getCookie('yb_sid') == 'undefined' || !getCookie('yb_sid') )
{
setSessionCookie(setSID());
}
function setUID()
{
return "ybID#"+_setID(5)+"-"+_setID(5)+"-"+Date.now();
}
function setSessionCookie(value)
{
var now = new Date();
var minutes = 30; now.setTime(now.getTime() + (minutes * 60 * 1000));
document.cookie = "yb_sid=" + value + "; max-age="+now.toUTCString()+"; expires="+now.toUTCString()+"; path=/";
} /*set session cookie*/
function getCookie(name)
{
var re = new RegExp(name + "=([^;]+)");
var value = re.exec(document.cookie);
return (value != null) ? unescape(value[1]) : null;
} /* get cookie value */
function _setID(length){
var result = '';
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
var charactersLength = characters.length;
for(var i = 0; i < length; i++ ) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
}
function setSID(){
var ts = Math.round(+new Date()+Math.random()/1000);
return ts;
}
function setCookie(name, value, days){
if (days){
var date = new Date();
date.setTime(date.getTime()+days*24*60*60*1000);
var expires = "; max-age="+date.toGMTString()+" expires=" + date.toGMTString();
} else {
var expires = "";
}
document.cookie = name+"=" + value+expires + ";path=/";
}
也许这有一种更简单的脚本编写方法?
您是否尝试过使用UUID https://www.npmjs.com/package/uuid生成用户ID?