【问题标题】:Is this javascript code valid? And is it efficient? Trying to create a javascript user ID and a session ID. Not sure if I have a valid code for this这个javascript代码有效吗?它有效率吗?试图创建一个 javascript 用户 ID 和一个会话 ID。不确定我是否有有效的代码
【发布时间】:2020-03-20 05:35:39
【问题描述】:

我正在尝试为我的网站创建自己的分析脚本,为此我尝试了一种方法来创建 userID 和 sessionID。

但我不确定我是否做得正确。

我正在尝试:

  • 检查用户是否设置了用户ID - 如果没有设置。

  • 检查用户是否有 sessionID - 它没有设置它。

  • userID 设置为跟随用户,用户在多次访问中继续持有 userID,其中 sessionID 对于每次访问都是唯一的。

    if(getCookie('yb_uid') != null) { 如果(getCookie('yb_sid')!= null){ setCookie('yb_uid', getCookie('yb_uid'), 730); setSessionCookie(getCookie('yb_sid')); } 别的 { setCookie('yb_uid', getCookie('yb_uid'), 730); setSessionCookie(setSID()); } } 别的 { setCookie('yb_uid', setUID(),730); setSessionCookie(setSID()); } if(getCookie('yb_sid') == null || getCookie('yb_sid') == '未定义' || !getCookie('yb_sid') ) { setSessionCookie(setSID()); }

    函数 setUID() { return "ybID#"+_setID(5)+"-"+_setID(5)+"-"+Date.now(); } 函数 setSessionCookie(值) { var now = new Date(); var分钟= 30; now.setTime(now.getTime() + (分钟 * 60 * 1000)); document.cookie = "yb_sid=" + value + "; max-age="+now.toUTCString()+"; expires="+now.toUTCString()+"; path=/"; } /设置会话 cookie/ 函数 getCookie(名称) { var re = new RegExp(name + "=([^;]+)"); var value = re.exec(document.cookie); 返回(值!= null)? unescape(值 [1]):空; } /* 获取 cookie 值 / 函数_setID(长度){ 变量结果 = ''; var 字符 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; var charactersLength = characters.length; for(var i = 0; i 结果 += characters.charAt(Math.floor(Math.random() * charactersLength)); } 返回结果; } 函数 setSID(){ var ts = Math.round(+new Date()+Math.random()/1000); 返回 ts; } 函数 setCookie(名称、值、天数){ 如果(天){ var date = new Date(); date.setTime(date.getTime()+days246060*1000); var expires = "; max-age="+date.toGMTString()+" expires=" + date.toGMTString(); } 别的 { var过期=“”; } document.cookie = name+"=" + value+expires + ";path=/"; }

也许这有更简单的脚本编写方法?

【问题讨论】:

    标签: javascript session analytics userid


    【解决方案1】:

    您是否尝试过 UUID https://www.npmjs.com/package/uuid 来生成用户 ID?

    【讨论】:

    • 那是什么?没听说过
    • 用于生成 UUID 的包。像 `` const uuidv1 = require('uuid/v1'); uuidv1(); // ⇨ '2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d' ```
    • 我希望避免使用第三方解决方案,因为这会影响文件加载时间和执行。
    • 当然,由你决定。我只是推荐了如何创建唯一 ID 的方式。我不会为它做任何广告。但它值得一看。看下载和依赖,更有说服力。我读了你的代码setUIDsetSID_setID,对我来说看起来不错。但我没有阅读其他代码。从你的陈述来看,它应该有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多