2016-02-10 78 views
2

我做了一个jQuery的弹出框,显示一些信息给用户与接受按钮。当用户进入我的网站时,用户将看到该弹出框。如何为每个用户生成唯一的密钥?

此时,我将wait保存在带有用户标识的数据库表的'answer'列中。

如果用户单击接受按钮,我将wait更新为yes'answer'列中该用户标识,并且不会在当前显示该用户的弹出框。

如果用户未单击接受按钮并重新加载页面,则会再次显示弹出框,因为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。

当我有了这样的饼干试试,

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

我无法从a.com访问cookie的结果。我认为我错了。我在跨域的Cookie方面没有太多经验。

我非常感谢任何建议。

+1

这里是你如何做到这一点:http://stackoverflow.com/questions/26203453/jquery-generate-unique-ids – daxro

+0

对不起,我忘了解释一些情况。现在,我已经更新了我的问题。请再次检查我。 – Cloud

回答

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; 
} 
+0

对不起,我忘了解释我的程序的一些情况。现在,我用更精确的解释更新我的问题。你能再请检查我吗?谢谢 – Cloud

+1

以及我所经历的,由于安全原因,不可能通过跨域读取cookie。所以如果我明白你的数据库在A站点和B站点的弹出窗口都是可以的。从站点A你不能读取站点B的cookie。因此,你需要在站点B的弹出式窗口中读取cookie并将该值发送给网站A,您可以将其与数据库进行匹配,然后决定是否显示该弹出窗口。这是我最好的主意来解决这个问题 – Fearodin

+0

谢谢。我会按你所说的去尝试 – Cloud

相关问题