加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

可怕的Evercookie和CakePHP

发布时间:2020-12-13 22:30:07 所属栏目:PHP教程 来源:网络整理
导读:所以我试图在cake PHP网站上实现 evercookie,但是我得到了一些非常非常奇怪的结果.我刚刚将代码文件复制并粘贴到我的app / webroot目录中,我似乎没有得到任何404错误,但我的cookie没有保存 – 他们每次都被重写.甚至更奇怪的是,当我加载页面时,它向Google.co
所以我试图在cake PHP网站上实现 evercookie,但是我得到了一些非常非常奇怪的结果.我刚刚将代码文件复制并粘贴到我的app / webroot目录中,我似乎没有得到任何404错误,但我的cookie没有保存 – 他们每次都被重写.甚至更奇怪的是,当我加载页面时,它向Google.com发送至少90个GET请求,并在Google Chrome中存储4-5个SQLite数据库; evercookie网站只存储一个.

我生成的HTML页面中的代码是这样的:

var ec = new evercookie();

// set a cookie "id" to a random 10 character string
// usage: ec.set(key,value)
ec.set("id","vm5m172dyg");


// retrieve a cookie called "id" (simply)
ec.get("id",function(value) { alert("Cookie value is " + value) });



// or use a more advanced callback function for getting our cookie
// the cookie value is the first param
// an object containing the different storage methods
// and returned cookie values is the second parameter

function getCookie(best_candidate,all_candidates)

    {

    alert("The retrieved cookie is: " + best_candidate + "n" +
        "You can see what each storage mechanism returned " +
        "by looping through the all_candidates object.");

         for (var item in all_candidates){

        document.write("Storage mechanism " + item +
                  " returned: " + all_candidates[item] + "<br>");

     }

}

    ec.get("id",getCookie);



// we look for "candidates" based off the number of "cookies" that
// come back matching since it's possible for mismatching cookies.
// the best candidate is most likely the correct one

这部分代码写入我的文档,这是输出(对我来说很好):

Storage mechanism userData returned: undefined
Storage mechanism cookieData returned: d9g6mfoo4y
Storage mechanism localData returned: d9g6mfoo4y
Storage mechanism globalData returned: undefined
Storage mechanism sessionData returned: d9g6mfoo4y
Storage mechanism windowData returned: d9g6mfoo4y
Storage mechanism historyData returned: undefined
Storage mechanism pngData returned: d9g6mfoo4y
Storage mechanism etagData returned: d9g6mfoo4y
Storage mechanism cacheData returned: d9g6mfoo4y
Storage mechanism dbData returned: d9g6mfoo4y
Storage mechanism lsoData returned: d9g6mfoo4y
Storage mechanism slData returned: d9g6mfoo4y

我的问题是如何阻止发送给Google的90个请求?我不知道它为什么这样做.如果我在网站上有十个用户(这并不令人难以置信),那就超过了900(0).你有没有想过为什么每次刷新页面时cookie都会重置?这正是我想要阻止的.

解决方法

好吧,我不觉得傻!事实证明,代码开头的ec.set()调用是在每个页面加载开始时设置cookie.所以,我调整了一些东西,呃,它现在正在运作.而且我不再向Google发送90个请求.

// retrieve a cookie called "id" (simply)
ec.get("id",function(value) { 
    if(value == undefined){
        // set a cookie "id" to a random 10 character string
        // usage: ec.set(key,value)
        ec.set("id","<?php echo $hash ?>");
    }
    else
    {
        // do nothing
    }
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读