我们可以检索和设置PHP cookie使用javascriopt

can we retrieve and set PHP cookies using javascriopt

本文关键字:PHP cookie 使用 javascriopt 设置 检索 我们      更新时间:2023-09-26

我用PHP设置了一个cookie,

setcookie("redirect", $this->currentPage(), time() + 31536000);  

,但我想检索这个cookie的值使用javascript当某个链接被点击。我该怎么做呢?

是的,这是可能的。

试着读取cookie:

function getCookie(c_name) {
    var i,x,y,ARRcookies=document.cookie.split(";");
    for (i=0;i<ARRcookies.length;i++) {
       x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
       y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
       x=x.replace(/^'s+|'s+$/g,"");
       if (x==c_name){
         return unescape(y);
       }
    }
 }
// get cookie foo
var foo = getCookie('foo');

尝试设置cookie:

/**
 * Sets a cookie
 */
function setCookie(c_name,value,exdays) {
    var exdate=new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
   document.cookie=c_name + "=" + c_value;
}
// set a cookie 'foo=bar' for 3 days
setCookie('foo', 'bar', 3);

cookie不是PHP特定的,它们是浏览器特定的,它们可以从PHP和Javascript中放置。一个简单的解决方案,你可以看看jQuery的Cookie插件

这是另一个尝试更容易理解的例子。

此外,由于cookie是编码的(键和值),您将需要对它们都进行解码。

var getCookie = function(name) {
    var thisCookie,
        keyValuePair,
        key,
        value,
        cookies = document.cookie.split('; ') ;
    for ( var i=0 ; i<cookies.length ; i++ ) {
        thisCookie = cookies[i] ; 
        keyValuePair = thisCookie.split('=') ; 
        key = decodeURIComponent(keyValuePair[0]) ; 
        if ( key === name ) { 
            value = keyValuePair[1] ; 
            return (value != null) ? decodeURIComponent(value) : null;
        }
    }
}

关于在点击链接时获取cookie的部分,您可以在事件处理程序中调用该函数。

让我们假设您知道如何在JavaScript中获得问题链接。下面是获取文档中第一个链接的一种方法:

var link = document.querySelector('A') ;

在任何情况下,一旦你有了你的链接,这里是如何获得的值,当链接被点击:

var getCookieOnLinkClick = function() {
    var cookieValue = getCookie('cookieName') ;
    console.log('Cookie value is ', cookieValue) ; 
} 
link.addEventListener('click', getCookieOnLinkClick) ;

(当然,大多数链接将加载一个新的页面,所以你不会有太多的时间做任何事情,一旦你得到cookie值

概念错误。cookie存储在浏览器中。PHP通过HTTP请求和响应获取/设置浏览器cookie。所以PHP和浏览器JS都可以操作相同的cookie