如何为每个用户生成唯一密钥?

时间:2016-02-10 07:48:10

标签: javascript php jquery cross-domain setcookie

我创建了一个jquery弹出框,通过接受按钮向用户显示一些信息。当用户进入我的网站时,用户将看到该弹出框。

目前,我使用用户ID将wait保存在数据库表的'answer'列中。

如果用户点击“接受”按钮,我会在wait列中将yes更新为'answer'该用户ID,而不会在今天显示该用户的弹出框。

如果用户未单击“接受”按钮并重新加载页面,请再次显示弹出框,因为该用户ID的wait状态未发生更改,用户无法执行任何操作。

我已经完成了那部分而且每件事都很好。

现在我想使用其他网站的弹出窗口。

假设我已经在a.com中创建了弹出框,我也希望使用b.com或任何其他网站的弹出框。

所以,我创建了一个脚本,可以从任何其他网站访问a.com的弹出窗口,

<script src="/js/jquery-1.11.3.min.js"></script>
<script src="/js/jquery.ui/jquery-ui-1.11.4.js"></script>
<link href="/css/jquery-ui-1.11.4.css" rel="stylesheet" />
<script>
$(document).ready(function(){
    var div = document.createElement("div");
    div.setAttribute("class","popup");
    document.body.appendChild(div);
    var id =  '1234';//I need to assign different value for each user
    var stype = "static";
    $(".popup").load("http://a.com/popup/popup_proce.php,{unique_id:id,script_type:stype}");
});
</script>

此脚本可以显示弹出过程。但是,问题是,如果用户单击“接受”按钮,我需要检查用户是否已经单击“接受”按钮。

因此,我需要知道每个用户将该记录保存到数据库中的唯一ID。

如果用户已经在今天看到弹出窗口并点击“接受”按钮,我今天不想为用户显示弹出窗口。

主要问题是我需要在上面的脚本中为每个用户生成cookie作为id,因为我需要检查这个用户是否已经接受弹出窗口,并且需要保存该用户数据。

如果我对id使用随机值,我无法检查用户是否已接受(仍为wait状态)。因为当我重新加载(刷新)页面时,随机ID会被更改并保存为新的id。

因此,我无法检查以前ID的wait状态,并且在刷新页面时它始终保存为新ID。这对我来说是个问题。

所以,我认为,我需要为每个用户ID创建cookie,而不是随机值。

当我尝试使用这样的cookie时,

document.cookie = "unique_id=123456";
var id = document.cookie;

我无法从a.com访问该Cookie结果。我想我错了。我没有很多跨域cookie的经验。

我非常感谢任何建议。

1 个答案:

答案 0 :(得分:1)

至少您可以尝试使用以下代码生成自定义UUID:

function getNewID()
{
    var d = new Date().getTime();
    if (window.performance && typeof window.performance.now === "function")
    {
        d += performance.now();
        ; // use high-precision timer if available
    }
    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c)
    {
        var r = (d + Math.random() * 16) % 16 | 0;
        d = Math.floor(d / 16);
        return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
    });
    return uuid;
}