【问题标题】:can we retrieve and set PHP cookies using javascriopt我们可以使用 javascript 检索和设置 PHP cookie
【发布时间】:2013-02-27 10:42:28
【问题描述】:

我已经使用 PHP 设置了一个 cookie,

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

但我想在单击某个链接时使用 javascript 检索此 cookie 的值。我该怎么做?

【问题讨论】:

  • document.cookie 包含您所有的 cookie 作为由 ; 分隔的键值对(例如 key1=value1;key2=value2)。您可以解析此字符串以获取所需的 cookie。反正我不会代替你写代码。

标签: php javascript redirect cookies


【解决方案1】:

是的,这是可能的。

试试这个来读取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);

【讨论】:

  • OP要读取cookie,他已经用PHP设置好了
  • @HamZaDzCyber​​DeV 谢谢! :)
【解决方案2】:

Cookie 不是特定于 PHP 的,它们是特定于浏览器的,可以通过 PHP 和 Javascript 放置。对于一个简单的解决方案,您可以查看jQuery's Cookie plugin

【讨论】:

    【解决方案3】:

    这是另一个试图更容易理解的观点。

    此外,由于 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 值,您将没有太多时间对它进行任何操作。)

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-24
        • 2012-05-05
        • 2011-09-05
        • 1970-01-01
        • 1970-01-01
        • 2012-12-15
        • 1970-01-01
        • 2014-05-31
        相关资源
        最近更新 更多